메시지 전송 재시도 - Amazon Simple Notification Service

메시지 전송 재시도

Amazon SNS에서는 각 전송 프로토콜에 대한 전송 정책을 정의합니다. 서버 측 오류가 발생할 경우(즉, 구독 엔드포인트를 호스팅하는 시스템을 사용할 수 없게 될 경우) Amazon SNS가 메시지 전송을 재시도하는 방식이 전송 정책에 따라 결정됩니다. 전송 정책이 다 사용되면 Amazon SNS가 전송 재시도를 중지하고 메시지를 폐기합니다(배달 못한 편지 대기열이 구독에 연결되어 있는 경우 제외). 자세한 내용은 Amazon SNS 배달 못한 편지 대기열 단원을 참조하십시오.

전송 프로토콜 및 정책

참고
  • HTTP/S를 제외하고 Amazon SNS에서 정의하는 전송 정책을 변경할 수 없습니다. HTTP/S만 사용자 지정 정책을 지원합니다. HTTP/S 전송 정책 생성을(를) 참조하십시오.

  • Amazon SNS는 전송 재시도에 지터링을 적용합니다. 자세한 내용은 AWS 아키텍처 블로그Exponential Backoff and Jitter 게시물을 참조하십시오.

엔드포인트 유형 전송 프로토콜 즉각 재시도(지연 없음) 단계 프리 백오프 단계 백오프 단계 포스트 백오프 단계 총 시도 횟수
AWS 관리형 엔드포인트 Amazon SQS 3회, 지연 없음 2회, 1초 간격 10회, 1초~20초 범위에서 지수 백오프 사용 100,000회, 20초 간격 100,015회, 23일 동안
AWS Lambda
고객 관리형 엔드포인트 SMTP 0회, 지연 없음 2회, 10초 간격 10회, 10초~600초(10분) 범위에서 지수 백오프 사용 38회, 600초(10분) 간격 50회 시도, 6시간 동안
SMS
모바일 푸시

전송 정책 단계

다음 다이어그램은 전송 정책의 단계를 보여줍니다.

각 전송 정책은 4단계로 구성됩니다.

  1. 즉각 재시도 단계(지연 없음) – 이 단계는 첫 전송 시도 직후에 발생합니다. 이 단계에서는 재시도 간에 지연이 없습니다.

  2. 프리 백오프 단계 – 이 단계는 즉각 재시도 단계 후에 옵니다. Amazon SNS는 백오프 함수를 적용하기 전에 이 단계에서 일련의 재시도를 수행합니다. 이 단계에서는 재시도 횟수와 재시도 간의 지연 시간을 지정합니다.

  3. 백오프 단계 – 이 단계에서는 재시도 백오프 함수를 사용하여 재시도 간 지연을 제어합니다. 최소 지연 시간과 최대 지연 시간을 설정한 다음 재시도 백오프 함수를 설정하여 최소 지연 시간부터 최대 지연 시간까지 어느 정도 간격으로 지연을 늘릴 것인지를 정의합니다. 백오프 함수는 Arithmetic, Exponential, Geometric 또는 Linear가 될 수 있습니다.

  4. 포스트 백오프 단계 – 백오프 단계 뒤에 오는 이 단계에서는 재시도 횟수와 재시도 간의 지연 시간을 지정합니다. 이것이 마지막 단계입니다.

HTTP/S 전송 정책 생성

전송 정책과 그 4단계를 사용하여 Amazon SNS가 HTTP/S 엔드포인트로의 메시지 전송을 재시도하는 방식을 정의할 수 있습니다. Amazon SNS에서는 HTTP 엔드포인트에 대한 기본 재시도 정책을 재정의할 수 있습니다. 예를 들어 HTTP 서버의 용량에 따라 정책을 사용자 지정하려는 경우에 재정의가 필요합니다.

구독 또는 주제 수준에서 HTTP/S 전송 정책을 JSON 객체로 설정할 수 있습니다. 주제 수준에서 정책을 정의하면 주제에 연결된 모든 HTTP/S 구독에 정책이 적용됩니다.

HTTP/S 서버의 용량에 따라 전송 정책을 사용자 지정해야 합니다. 정책은 주제 속성 또는 구독 속성으로 설정할 수 있습니다. 주제의 모든 HTTP/S 구독이 동일한 HTTP/S 서버를 대상으로 하는 경우 전송 정책을 주제 속성으로 설정하여 주제의 모든 HTTP/S 구독에 정책이 적용되도록 하는 것이 좋습니다. 이렇게 하지 않으면 정책이 대상으로 하는 HTTP/S 서버의 용량에 따라 주제의 각 HTTP/S 구독에 대한 전송 정책을 작성해야 합니다.

다음 JSON 객체는 실패한 HTTP/S 전송을 아래와 같이 재시도하도록 Amazon SNS에 지시하는 전송 정책을 나타냅니다.

  1. 지연 없음 단계에서 즉시 3회

  2. 프리 백오프 단계에서 2회(1초 간격)

  3. 10회(1초~60초 범위에서 지수 백오프 사용)

  4. 35회(60초 간격)

Amazon SNS는 총 50회 전송을 시도한 후 메시지를 폐기합니다.

참고

또한 이 전송 정책은 초당 10개 이하로 전송을 제한하도록 Amazon SNS에 지시합니다.

{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 } }

전송 정책은 재시도 정책과 제한 정책으로 구성됩니다. 전송 정책에는 총 8개의 속성이 있습니다.

Policy 설명 Constraint
minDelayTarget 재시도의 최소 지연 시간입니다.

단위:

1~최대 지연 시간

기본값: 20

maxDelayTarget 재시도의 최대 지연 시간입니다.

단위:

최소 지연 시간~3,600

기본값: 20

numRetries 즉각 재시도, 프리 백오프, 백오프, 포스트 백오프 단계의 재시도를 모두 포함한 총 재시도 횟수입니다. 0~100

기본값: 3

numNoDelayRetries 재시도 간 지연 없이 즉각 수행되는 재시도 횟수입니다. 0 이상

기본값: 0

numMinDelayRetries 재시도 간 지정된 최소 지연 시간으로 프리 백오프 단계에서 수행되는 재시도 횟수입니다. 0 이상

기본값: 0

numMaxDelayRetries 재시도 간 지정된 최대 지연 시간으로 포스트 백오프 단계에서 수행되는 재시도 횟수입니다. 0 이상

기본값: 0

backoffFunction 재시도 간 백오프에 사용되는 모델입니다.

다음 4가지 옵션 중 하나:

  • Arithmetic

  • Exponential

  • Geometric

  • Linear

기본값: Linear

maxReceivesPerSecond 구독별 초당 최대 전송 수입니다. 1 이상

기본값: 제한 없음

Amazon SNS에서는 다음 수식을 사용하여 백오프 단계의 재시도 횟수를 계산합니다.

numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries

3가지 파라미터를 사용하여 백오프 단계의 재시도 빈도를 제어할 수 있습니다.

  • minDelayTarget – 백오프 단계에서 처음 수행하는 재시도에 대한 지연을 정의합니다.

  • maxDelayTarget – 백오프 단계에서 마지막으로 수행하는 재시도에 대한 지연을 정의합니다.

  • backoffFunction – Amazon SNS가 백오프 단계의 첫 재시도부터 마지막 재시도까지의 모든 재시도에 대한 지연을 계산하는 데 사용할 알고리즘을 정의합니다. 4가지 재시도 백오프 함수 중 하나를 사용할 수 있습니다.

다음 다이어그램은 백오프 단계에서 각 재시도 백오프 함수에 따라 재시도 관련 지연이 어떻게 달라지는지를 보여줍니다. 전송 정책의 총 재시도 횟수는 10회, 최소 지연 시간은 5초, 최대 지연 시간은 260초로 설정되어 있습니다. 세로 축은 10번의 재시도 각각에 대한 지연(초)을 나타냅니다. 가로 축은 첫 번째 시도에서 열 번째 시도까지의 재시도 횟수를 나타냅니다.