Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Tentativi di recapito dei SNS messaggi Amazon
Amazon SNS definisce una politica di consegna per ogni protocollo di consegna. La politica di consegna definisce in che modo Amazon SNS ritenta la consegna dei messaggi quando si verificano errori sul lato server (quando il sistema che ospita l'endpoint sottoscritto diventa non disponibile). Quando la politica di spedizione è esaurita, Amazon SNS interrompe il tentativo di consegna e scarta il messaggio, a meno che all'abbonamento non sia allegata una coda di lettere non scritte. Per ulteriori informazioni, consulta Code di lettere non SNS ricevute su Amazon.
Argomenti
Protocolli e policy di consegna
Nota
-
Ad eccezione dei HTTP/S, you can't change Amazon SNS-defined delivery policies. Only HTTP/S supporti per le politiche personalizzate. Per informazioni, consulta Creazione di una politica di consegna HTTP /S.
-
Amazon SNS applica il jittering ai nuovi tentativi di consegna. Per ulteriori informazioni, vedere il post Backoff esponenziale e Jitter
in Blog architettura AWS . -
Il tempo totale di ripetizione della policy per un endpoint HTTP /S non può essere superiore a 3.600 secondi. Questo è un limite fissato che non può essere modificato.
Tipo di endpoint | Protocolli di consegna | Fase dei nuovi tentativi immediati (nessun ritardo) | Fase di prebackoff | Fase di backoff | Fase di postbackoff | Totale tentativi |
---|---|---|---|---|---|---|
AWS endpoint gestiti | Amazon Data Firehose¹ | 3 volte, senza ritardo | 2 volte, 1 secondo di distanza | 10 volte, con backoff esponenziale, da 1 secondo a 20 secondi | 100.000 volte, 20 secondi di distanza | 100.015 volte, oltre 23 giorni |
AWS Lambda | ||||||
Amazon SQS | ||||||
Endpoint gestiti dal cliente | SMTP | 0 volte, senza ritardo | 2 volte, 10 secondi di distanza | 10 volte, con backoff esponenziale, da 10 secondi a 600 secondi (10 minuti) | 38 volte, 600 secondi (10 minuti) di distanza | 50 tentativi, oltre 6 ore |
SMS | ||||||
Push per dispositivi mobili |
¹ Per gli errori di limitazione con il protocollo Firehose, Amazon SNS utilizza la stessa politica di consegna degli endpoint gestiti dai clienti.
Fasi della policy di consegna
Il diagramma seguente mostra le fasi di una policy di consegna.

Ogni policy di consegna si compone di quattro fasi.
-
Fase di riprova immediata (Nessun ritardo) – Questa fase si verifica immediatamente dopo il tentativo di consegna iniziale. Non c'è ritardo tra i nuovi tentativi in questa fase.
-
Fase di prebackoff – Questa fase segue la fase dei nuovi tentativi senza ritardo. Amazon SNS utilizza questa fase per tentare una serie di nuovi tentativi prima di applicare una funzione di backoff. Questa fase specifica il numero di tentativi e la quantità di ritardo tra di loro.
-
Fase di backoff – Questa fase controlla il ritardo tra tentativi utilizzando la funzione retry-backoff. Questa fase imposta un ritardo minimo, un ritardo massimo e una funzione retry-backoff che definisce la velocità con cui il ritardo aumenta da minimo a massimo. La funzione di backoff può essere aritmetica, esponenziale, geometrica o lineare.
-
Fase di postbackoff – Questa fase segue la fase di backoff. Specifica un certo numero di tentativi e la quantità di ritardo tra di loro. Questa è la fase finale.
Creazione di una politica di consegna HTTP /S
Puoi utilizzare una politica di consegna e le sue quattro fasi per definire in che modo Amazon SNS ritenta la consegna dei messaggi agli endpoint HTTP /S. Amazon ti SNS consente di ignorare la politica di ripetizione dei tentativi predefinita per gli HTTP endpoint quando, ad esempio, potresti voler personalizzare la politica in base alla capacità del tuo HTTP server.
Puoi impostare 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 gli abbonamenti associati all'argomento. Per impostare la politica di consegna a livello di abbonamento, puoi utilizzare l'SetSubscriptionAttributes
APIazione Subscribe
o. Per impostare la politica di consegna a livello di argomento, puoi utilizzare l'SetTopicAttributes
APIazione CreateTopic
o. In alternativa, puoi anche utilizzare la risorsa AWS::SNS: :Subscription nei tuoi AWS CloudFormation modelli.
È necessario personalizzare la politica di distribuzione in base al 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 server a cui è destinata la politica.
Inoltre, puoi impostare l'intestazione Content-Type nella policy di richiesta per specificare il tipo di supporto della notifica. Per impostazione predefinita, Amazon SNS invia tutte le notifiche agli endpoint HTTP /S con il tipo di contenuto impostato text/plain; charset=UTF-8
su. Amazon SNS ti consente di ignorare la politica di richiesta predefinita. Per headerContentType supportata e i vincoli, consulta la tabella sottostante.
L'JSONoggetto seguente rappresenta una politica di consegna che indica SNS ad Amazon di riprovare un tentativo di consegna HTTP /S fallito, nel modo seguente:
-
3 volte immediatamente nella fase nessun ritardo
-
2 volte (1 secondo di distanza) nella fase di pre-backoff
-
10 volte (con backoff esponenziale da 1 secondo a 60 secondi)
-
35 volte (60 secondi di distanza) nella fase di pre-backoff
In questo esempio di politica di consegna, Amazon SNS effettua un totale di 50 tentativi prima di scartare il messaggio. Per conservare il messaggio dopo aver esaurito i tentativi specificati nella politica di recapito, configura l'abbonamento in modo da spostare i messaggi non recapitabili in una coda di lettere non recapitate (). DLQ Per ulteriori informazioni, consulta Code di lettere non SNS ricevute su Amazon.
Nota
Questa politica di consegna impone inoltre SNS ad Amazon di limitare le consegne a non più di 10 al secondo, utilizzando la proprietà. maxReceivesPerSecond
Questa velocità di limitazione automatica potrebbe comportare la pubblicazione di un numero maggiore di messaggi (traffico in entrata) rispetto a quelli recapitati (traffico in uscita). Quando c'è più traffico in ingresso rispetto a quello in uscita, la sottoscrizione può accumulare un backlog di messaggi di grandi dimensioni, che potrebbe causare un'elevata latenza di recapito dei messaggi. Nelle policy di consegna, assicurati di specificare un valore per maxReceivesPerSecond
che non influisce negativamente sul carico di lavoro.
Nota
Questa politica di recapito sostituisce il tipo di contenuto predefinito per la notifica /S a. HTTP application/json
{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 }, "requestPolicy": { "headerContentType": "application/json" } }
La policy di distribuzione è composta da una policy per nuovi tentativi, una policy di limitazione (della larghezza di banda della rete) e una policy di richiesta. In totale, sono disponibili nove attributi in una policy di distribuzione.
Policy | Descrizione | Vincolo |
---|---|---|
minDelayTarget |
Il ritardo minimo per un nuovo tentativo. Unità: secondi |
1 al massimo ritardo Di default: 20 |
maxDelayTarget |
Il ritardo massimo per un nuovo tentativo. Unità: secondi |
Ritardo minimo su 3.600 Di default: 20 |
numRetries |
Il numero totale di tentativi, inclusi tentativi immediati, pre-backoff, backoff e post-backoff. | Da 0 a 100 Di default: 3 |
numNoDelayRetries |
Il numero di tentativi da effettuare immediatamente, senza ritardi tra essi. | Uguale o maggiore di 0 Di deafult: 0 |
numMinDelayRetries |
Il numero di tentativi nella fase di pre-backoff, con il ritardo minimo specificato tra essi. | Uguale o maggiore di 0 Di default: 0 |
numMaxDelayRetries |
Il numero di tentativi nella fase post-backoff, con il massimo ritardo tra essi. | Uguale o maggiore di 0 Di default: 0 |
backoffFunction |
Il modello per il backoff tra i nuovi tentativi. |
Una delle quattro opzioni:
Di default: lineare |
maxReceivesPerSecond
|
Numero massimo di consegne al secondo, per sottoscrizione. | Uguale o maggiore di 1 Di default: nessuna limitazione |
headerContentType
|
Il tipo di contenuto della notifica inviata agli endpoint HTTP /S. |
Se la policy di richiesta non è definita, il tipo di contenuto è preimpostato su Quando la distribuzione di messaggi non elaborati è disabilitata per una sottoscrizione (impostazione predefinita) o quando la policy di distribuzione è definita a livello di argomento, i tipi di contenuto dell'intestazione supportati sono Quando la distribuzione di messaggi non elaborati è abilitata per una sottoscrizione, sono supportati i seguenti tipi di contenuto:
|
Amazon SNS utilizza la seguente formula per calcolare il numero di nuovi tentativi nella fase di backoff:
numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
È possibile utilizzare tre parametri per controllare la frequenza dei nuovi tentativi nella fase di backoff.
-
minDelayTarget
– Definisce il ritardo associato al primo tentativo nella fase di backoff. -
maxDelayTarget
– Definisce il ritardo associato al nuovo tentativo finale nella fase di backoff. -
backoffFunction
— Definisce l'algoritmo SNS utilizzato da Amazon per calcolare i ritardi associati a tutti i tentativi tra il primo e l'ultimo tentativo nella fase di backoff. È possibile utilizzare una delle quattro funzioni retry-backoff.
Il diagramma seguente mostra come ogni funzione di backoff di nuovi tentativi influisce sul ritardo associato ai tentativi durante la fase di backoff: una policy di consegna con il numero totale di tentativi impostato su 10, il ritardo minimo impostato su 5 secondi e il ritardo massimo impostato su 260 secondi. L'asse verticale rappresenta il ritardo in secondi associato a ciascuno dei 10 tentativi. L'asse orizzontale rappresenta il numero di tentativi, dal primo al decimo tentativo.
