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.
Tópicos
Protocolos e políticas de entrega
nota
-
Com exceção do HTTP/S, you can't change Amazon SNS-defined delivery policies. Only HTTP/S 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.
Cada política de entrega é composta por quatro fases.
-
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.
-
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.
-
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.
-
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 suas HTTP/S delivery policy as a JSON object at the subscription or topic
level. When you define the policy at the topic level, it applies to all HTTP/S assinaturas associadas ao tópico. Para definir a política de entrega no nível da assinatura, você pode usar a SetSubscriptionAttributes
APIação Subscribe
ou. Para definir a política de entrega no nível do tópico, você pode usar a SetTopicAttributes
APIação CreateTopic
ou. 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 o HTTP/S server's capacity. You can set the policy as a topic attribute or a subscription attribute. If all HTTP/S subscriptions in your topic target the same HTTP/S server, we recommend that you set the delivery policy as a topic attribute, so that it remains valid for all HTTP/S subscriptions in the topic. Otherwise, you must compose a delivery policy for each HTTP/S subscription in your topic, according the capacity of the HTTP/S servidor 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:
-
3 vezes imediatamente na fase sem atraso
-
2 vezes (1 segundo de intervalo) na fase de pré-recuo
-
10 vezes (com recuo exponencial de 1 segundo a 60 segundos)
-
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.
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 autolimitação 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:
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á 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 Quando a entrega de mensagens brutas é ativada para uma assinatura, os seguintes tipos de conteúdo são compatíveis:
|
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.