Tentativas de entrega de SNS mensagens da Amazon - Amazon Simple Notification Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tentativas de entrega de SNS mensagens da Amazon

A Amazon SNS define uma política de entrega para cada protocolo de entrega. A política de entrega define como a Amazon SNS tenta novamente a entrega de mensagens quando ocorrem erros do lado do servidor (quando o sistema que hospeda o endpoint inscrito fica indisponível). Quando a política de entrega se esgota, a Amazon SNS para de repetir a entrega e descarta a mensagem, a menos que uma fila de mensagens mortas seja anexada à assinatura. Para obter mais informações, consulte Filas de SNS cartas mortas da Amazon () DLQs.

Protocolos e políticas de entrega

nota
  • Com exceção do HTTP /S, você não pode alterar as políticas SNS de entrega definidas pela Amazon. Somente o HTTP /S oferece suporte a políticas personalizadas. Consulte Criação de uma política de entrega de HTTP /S.

  • A Amazon SNS aplica instabilidade às novas tentativas de entrega. Para obter mais informações, consulte a publicação Exponential Backoff and Jitter (“Recuo exponencial e instabilidade”) no Blog de arquitetura da AWS .

  • O tempo total de repetição da política para um endpoint HTTP /S não pode ser maior que 3.600 segundos. Esse limite é fixo e não pode ser alterado.

Tipo de endpoint Protocolos de entrega Fase de nova tentativa imediata (sem atraso) Fase de pré-recuo Fase de recuo Fase de pós-recuo Total de tentativas
AWS endpoints gerenciados Amazon Data Firehose¹ 3 vezes, sem atraso 2 vezes, 1 segundo de intervalo 10 vezes, com recuo exponencial, de 1 segundo a 20 segundos 100.000 vezes, 20 segundos de intervalo 100.015 vezes, ao longo de 23 dias
AWS Lambda
Amazon SQS
Endpoints gerenciados pelo cliente SMTP 0 vezes, sem atraso 2 vezes, 10 segundos de intervalo 10 vezes, com recuo exponencial, de 10 segundos a 600 segundos (10 minutos) 38 vezes, 600 segundos (10 minutos) de intervalo 50 tentativas, mais de 6 horas
SMS
Push para dispositivos móveis

¹ Para erros de limitação com o protocolo Firehose, a Amazon SNS usa a mesma política de entrega dos endpoints gerenciados pelo cliente.

Estágios da política de entrega

O diagrama a seguir mostra as fases de uma política de entrega.

Timeline showing pre-backoff, backoff, and post-backoff phases with immediate retry at initial delivery attempt.

Cada política de entrega é composta por quatro fases.

  1. Fase de nova tentativa imediata (sem atraso): essa fase ocorre imediatamente após a tentativa inicial de entrega. Não há um intervalo entre novas tentativas nessa fase.

  2. Fase de pré-recuo: segue a fase de nova tentativa imediata. A Amazon SNS usa essa fase para tentar um conjunto de novas tentativas antes de aplicar uma função de recuo. Essa fase especifica o número de novas tentativas e a quantidade de atraso entre elas.

  3. Fase de recuo: essa fase controla o atraso entre as novas tentativas usando a função de recuo de nova tentativa. Essa fase define um atraso mínimo, um atraso máximo e uma função de recuo de nova tentativa que define a rapidez com que o atraso aumenta do atraso mínimo para o máximo. A função de recuo pode ser aritmética, exponencial, geométrica ou linear.

  4. Fase de pós-recuo: essa fase ocorre após a fase de recuo. Ela especifica um número de novas tentativas e a quantidade de atraso entre elas. Esta é a fase final.

Criação de uma política de entrega de HTTP /S

Você pode usar uma política de entrega e suas quatro fases para definir como a Amazon SNS tenta novamente a entrega de mensagens para endpoints HTTP /S. A Amazon SNS permite que você substitua a política de repetição padrão para HTTP endpoints quando você pode, por exemplo, querer personalizar a política com base na capacidade do seu HTTP servidor.

Você pode definir sua política de entrega de HTTP /S como um JSON objeto no nível da assinatura ou do tópico. Quando você define a política no nível do tópico, ela se aplica a todas as assinaturas HTTP /S associadas ao tópico. Para definir a política de entrega no nível da assinatura, você pode usar a SetSubscriptionAttributesAPIação Subscribeou. Para definir a política de entrega no nível do tópico, você pode usar a SetTopicAttributesAPIação CreateTopicou. Como alternativa, você também pode usar o recurso AWS::SNS: :Subscription em seus AWS CloudFormation modelos.

Você deve personalizar sua política de entrega de acordo com a capacidade do seu servidor HTTP /S. É possível definir a política como um atributo de tópico ou um atributo de inscrição. Se todas as assinaturas HTTP /S em seu tópico tiverem como alvo o mesmo servidor HTTP /S, recomendamos que você defina a política de entrega como um atributo de tópico, para que ela permaneça válida para todas as assinaturas HTTP /S no tópico. Caso contrário, você deverá redigir uma política de entrega para cada assinatura de HTTP /S em seu tópico, de acordo com a capacidade do servidor HTTP /S que a política visa.

Também é possível definir o cabeçalho Content-Type na política de solicitação para especificar o tipo de mídia da notificação. Por padrão, a Amazon SNS envia todas as notificações para endpoints HTTP /S com o tipo de conteúdo definido como. text/plain; charset=UTF-8 A Amazon SNS permite que você substitua a política de solicitação padrão. Consulte a tabela a seguir para obter detalhes sobre headerContentType compatíveis e restrições.

O JSON objeto a seguir representa uma política de entrega que instrui SNS a Amazon a repetir uma tentativa fracassada de entrega de HTTP /S, da seguinte forma:

  1. 3 vezes imediatamente na fase sem atraso

  2. 2 vezes (1 segundo de intervalo) na fase de pré-recuo

  3. 10 vezes (com recuo exponencial de 1 segundo a 60 segundos)

  4. 35 vezes (com intervalo de 60 segundos) na fase de pós-recuo

Neste exemplo de política de entrega, a Amazon SNS faz um total de 50 tentativas antes de descartar a mensagem. Para manter a mensagem após o esgotamento das novas tentativas especificadas na política de entrega, configure sua assinatura para mover as mensagens não entregues para uma fila de mensagens não entregues (). DLQ Para obter mais informações, consulte Filas de SNS cartas mortas da Amazon () DLQs.

nota

Essa política de entrega também instrui SNS a Amazon a reduzir as entregas para no máximo 10 por segundo, usando a propriedade. maxReceivesPerSecond Essa taxa de limitação automática pode resultar em mais mensagens publicadas (tráfego de entrada) do que entregues (tráfego de saída). Se houver mais tráfego de entrada que de saída, sua assinatura pode acumular um grande backlog de menagens, o que pode causar alta latência na entrega de mensagens. Em suas políticas de entrega, certifique-se de especificar um valor para maxReceivesPerSecond que não afete negativamente o seu workload.

nota

Essa política de entrega substitui o tipo de conteúdo padrão da notificação HTTP /S para. application/json

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

A política de entrega é composta por uma política de novas tentativas, uma política de controle de utilização e uma política de solicitação. No total, há nove atributos em uma política de entrega.

Política Descrição Restrição
minDelayTarget O atraso mínimo para uma nova tentativa.

Unidade: segundos

1 a atraso máximo

Padrão: 20

maxDelayTarget O atraso máximo para uma nova tentativa.

Unidade: segundos

Atraso mínimo a 3.600

Padrão: 20

numRetries O número total de novas tentativas, incluindo repetições imediatas, pré-recuo, recuo e pós-recuo. 0 a 100

Padrão: 3

numNoDelayRetries O número de novas tentativas a serem feitas imediatamente, sem atraso entre elas. 0 ou mais

Padrão: 0

numMinDelayRetries O número de tentativas na fase de pré-recuo, com o atraso mínimo especificado entre elas. 0 ou mais

Padrão: 0

numMaxDelayRetries O número de novas tentativas na fase pós-recuo, com o atraso máximo entre elas. 0 ou mais

Padrão: 0

backoffFunction O modelo para recuo entre novas tentativas.

Uma das quatro opções:

  • aritmética

  • exponencial

  • geométrica

  • linear

Padrão: linear

maxReceivesPerSecond O número máximo de entregas por segundo, por inscrição. 1 ou mais

Padrão: sem limitação

headerContentType

O tipo de conteúdo da notificação que está sendo enviada aos HTTP endpoints /S.

Se a política de solicitação não estiver definida, o tipo de conteúdo usará text/plain; charset=UTF-8 como padrão.

Quando a entrega de mensagens brutas é desativada para uma assinatura (padrão), ou quando a política de entrega é definida no nível do tópico, os tipos de conteúdo de cabeçalho compatíveis são application/json e text/plain.

Quando a entrega de mensagens brutas é ativada para uma assinatura, os seguintes tipos de conteúdo são compatíveis:

  • text/css

  • text/csv

  • text/html

  • text/plain

  • text/xml

  • application/atom+xml

  • application/json

  • application/octet-stream

  • application/soap+xml

  • aplicação/ x-www-form-urlencoded

  • application/xhtml+xml

  • application/xml

A Amazon SNS usa a seguinte fórmula para calcular o número de novas tentativas na fase de recuo:

numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries

É possível usar três parâmetros para controlar a frequência de tentativas na fase de recuo.

  • minDelayTarget: define o atraso associado à primeira nova tentativa de na fase de recuo.

  • maxDelayTarget: define o atraso associado à tentativa final na fase de recuo.

  • backoffFunction— Define o algoritmo que a Amazon SNS usa para calcular os atrasos associados a todas as tentativas de repetição entre a primeira e a última tentativa na fase de recuo. Você pode usar uma das quatro funções de recuo de nova tentativa.

O diagrama a seguir mostra como cada função de tentativa de recuo afeta o atraso associado a novas tentativas durante a fase de recuo: Uma política de entrega com o número total de tentativas definido como 10, o atraso mínimo definido como 5 segundos e o atraso máximo definido como 260 segundos. O eixo vertical representa o atraso em segundos associado a cada uma das 10 novas tentativas. O eixo horizontal representa o número de novas tentativas, da primeira à décima.

Graph comparing exponential, arithmetic, linear, and geometric retry backoff functions over 10 retries.