

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 consegna dei messaggi di Amazon SNS
<a name="sns-message-delivery-retries"></a>

Amazon SNS definisce una *policy di consegna* per ogni protocollo di consegna. La policy di consegna definisce il modo in cui Amazon SNS esegue nuovi tentativi di 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 smette di tentare nuovamente la consegna e scarterà il messaggio, a meno che all'abbonamento non sia allegata una coda di lettere non recapitate. Per ulteriori informazioni, consulta [Code di lettere non ricevute di Amazon SNS](sns-dead-letter-queues.md).

## Protocolli e policy di consegna
<a name="delivery-policies-for-protocols"></a>

**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](#creating-delivery-policy).
Amazon SNS applica il jittering ai tentativi di consegna. Per ulteriori informazioni, vedere il post [Backoff esponenziale e Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/) in *Blog architettura AWS *.
**Il tempo totale di riprova delle policy per un HTTP/S endpoint non può essere superiore a 3.600 secondi. Questo è un limite fissato che non può essere modificato**.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sns/latest/dg/sns-message-delivery-retries.html)

¹ Per gli errori di limitazione con il protocollo Firehose, Amazon SNS utilizza la stessa politica di distribuzione degli endpoint gestiti dai clienti.

## Fasi della policy di consegna
<a name="delivery-policy-stages"></a>

Il diagramma seguente mostra le fasi di una policy di consegna.

![\[Un diagramma sull'asse xy che mostra Time come valore x e Initial Delivery Attempt come valore y. La politica di consegna inizia con la fase di riavvio immediato sull'asse y, seguita sull'asse x dalla fase pre-backoff, dalla fase di backoff e dalla fase post-backoff.\]](http://docs.aws.amazon.com/it_it/sns/latest/dg/images/sns-delivery-policy-phases.png)


Ogni policy di consegna si compone di quattro fasi.

1. Fase **di nuovo tentativo immediato (nessun ritardo): questa fase** si verifica immediatamente dopo il tentativo di consegna iniziale. Non c'è ritardo tra i nuovi tentativi in questa fase.

1. Fase **pre-backoff: questa fase** segue la fase di ritentativo immediato. Amazon SNS utilizza questa fase per effettuare una serie di tentativi prima di applicare una funzione di backoff. Questa fase specifica il numero di tentativi e la quantità di ritardo tra di loro.

1. **Fase di backoff**: questa fase controlla il ritardo tra i 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.

1. Fase **post-backoff: 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
<a name="creating-delivery-policy"></a>

**Puoi definire in che modo Amazon SNS ritenta la consegna dei messaggi agli HTTP/S endpoint utilizzando una politica di consegna con quattro fasi: *senza ritardo*, *pre-backoff, backoff e post-backoff*.** Questa policy ti consente di ignorare le impostazioni predefinite per i nuovi tentativi e di personalizzarle in base alla capacità del tuo server HTTP.

**Puoi definire la tua politica HTTP/S di consegna come oggetto JSON a livello di **argomento** o di abbonamento:**
+ **Politica a livello di argomento**: si applica a tutti gli HTTP/S abbonamenti collegati all'argomento. Utilizza l'azione [https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)o [https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)API per impostare questa politica.
+ **Politica a livello di abbonamento**: si applica solo a un abbonamento specifico. Utilizza l'azione [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)o [https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)API per impostare questa politica.

In alternativa, puoi anche utilizzare la [AWS::SNS::Subscription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html)risorsa nei tuoi CloudFormation modelli.

È necessario personalizzare la politica di distribuzione in base alla capacità del HTTP/S server:
+ **Server singolo per tutti gli abbonamenti**: se tutti gli HTTP/S abbonamenti di un argomento utilizzano lo stesso server, imposta la politica di distribuzione come attributo dell'argomento per garantire la coerenza tra tutti gli abbonamenti.
+ **Server diversi per gli abbonamenti**: se gli abbonamenti sono destinati a server diversi, crea una politica di distribuzione unica per ogni abbonamento, personalizzata in base alla capacità del server specifico.

Puoi anche impostare l'`Content-Type`intestazione nella politica di richiesta per specificare il tipo di supporto della notifica. Per impostazione predefinita, Amazon SNS invia tutte le notifiche agli HTTP/S endpoint con il tipo di contenuto impostato su. `text/plain; charset=UTF-8` Tuttavia, puoi ignorare questa impostazione predefinita utilizzando il [`headerContentType`](#header-content-type)campo nella politica di richiesta.

Il seguente oggetto JSON definisce una politica di consegna con nuovi tentativi strutturati in quattro fasi:

1. **Fase senza ritardo**: riprova immediatamente 3 volte.

1. **Fase pre-backoff**: riprova 2 volte con un intervallo di 1 secondo.

1. **Fase di backoff**: riprova 10 volte con ritardi esponenziali compresi tra 1 e 60 secondi.

1. **Fase post-backoff**: riprova 35 volte con un intervallo fisso di 60 secondi.

Amazon SNS effettua un totale di **50 tentativi** di recapito di un messaggio prima di eliminarlo. Per conservare i messaggi che non possono essere recapitati dopo tutti i tentativi, configura l'abbonamento per spostare i messaggi non recapitabili in una coda di lettere non recapitate (DLQ). Per ulteriori informazioni, consulta [Code di lettere non ricevute di Amazon SNS](sns-dead-letter-queues.md).

Amazon SNS considera risolvibili tutti gli errori 5XX e 429 (troppe richieste inviate) errori. Questi errori sono soggetti alla politica di consegna. Tutti gli altri errori sono considerati errori permanenti e non verranno tentati nuovi tentativi.

**Nota**  
Questa politica di consegna utilizza la `maxReceivesPerSecond` proprietà per limitare il traffico di consegna a una media di 10 messaggi al secondo per abbonamento. Sebbene questo meccanismo aiuti a evitare che l' HTTP/S endpoint venga sopraffatto da un traffico elevato, è progettato per mantenere un tasso di consegna medio e non impone un limite rigoroso. Occasionalmente possono verificarsi picchi di traffico relativi alle consegne superiori al limite specificato, soprattutto se la frequenza di pubblicazione è notevolmente superiore al limite di limitazione.  
Quando il traffico di pubblicazione (in entrata) supera la velocità di recapito (in uscita), può verificarsi un arretrato dei messaggi e una maggiore latenza di consegna. Per evitare tali problemi, assicurati che il `maxReceivesPerSecond` valore sia in linea con i requisiti di capacità e carico di lavoro HTTP/S del server.

Il seguente esempio di politica di distribuzione sostituisce il tipo di contenuto predefinito per la notifica HTTP/S. `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 politica di consegna è composta da una politica di **riprova, una politica** di **limitazione** e una politica di richiesta.** In totale, ci sono **9 attributi** in una politica di consegna.


| Policy  | Description | 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: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sns/latest/dg/sns-message-delivery-retries.html) **Di default:** lineare  | 
| maxReceivesPerSecond  | Il numero medio massimo di recapiti di messaggi al secondo, per abbonamento. | Uguale o maggiore di 1**Impostazione predefinita:** nessuna limitazione (nessun limite alla velocità di consegna) | 
| headerContentType  | Il tipo di contenuto della notifica inviato agli endpoint HTTP/S. |  Se la policy di richiesta non è definita, il tipo di contenuto è preimpostato su `text/plain; charset=UTF-8`. 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 `application/json` e `text/plain`. Quando la distribuzione di messaggi non elaborati è abilitata per una sottoscrizione, sono supportati i seguenti tipi di contenuto: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sns/latest/dg/sns-message-delivery-retries.html)  | 

Amazon SNS utilizza la formula seguente per calcolare il numero di nuovi tentativi nella fase di backoff:

```
numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
```

È possibile controllare la frequenza dei nuovi tentativi durante la fase di backoff utilizzando tre parametri:
+ **`minDelayTarget`**— Imposta il ritardo per il primo tentativo di nuovo tentativo nella fase di backoff.
+ **`maxDelayTarget`**— Imposta il ritardo per l'ultimo tentativo di nuovo tentativo nella fase di backoff.
+ **`backoffFunction`**— Determina l'algoritmo utilizzato da Amazon SNS per calcolare i ritardi di tutti i tentativi tra il primo e l'ultimo tentativo. Puoi scegliere tra quattro funzioni di retry-backoff disponibili.

Il diagramma seguente illustra come le diverse funzioni di retry backoff influiscano sui ritardi tra i tentativi durante la fase di backoff. **La politica di consegna utilizzata per questo esempio include le seguenti impostazioni: **10 tentativi totali**, un **ritardo minimo di 5 secondi e un ritardo massimo di 260 secondi.****
+ L'**asse verticale** mostra il ritardo (in secondi) per ogni nuovo tentativo.
+ L'**asse orizzontale** rappresenta la sequenza di tentativi, che va dal primo al decimo tentativo.

![\[Il diagramma mostra in che modo i nuovi tentativi ritardano l'avanzamento nell'arco di 10 tentativi in base a quattro funzioni secondarie: esponenziale, aritmetica, lineare e geometrica. Ogni linea colorata rappresenta lo schema di ritardo di una funzione: Esponenziale: aumenta rapidamente, raggiungendo il ritardo massimo più rapidamente, Lineare: aumenta costantemente a ogni nuovo tentativo, aritmetico e geometrico: mostra aumenti moderati, più ripidi del lineare ma meno rapidi dell'esponenziale. Tutte le linee iniziano vicino al ritardo minimo di 5 secondi e raggiungono il ritardo massimo di 260 secondi al decimo tentativo.\]](http://docs.aws.amazon.com/it_it/sns/latest/dg/images/backoff-graph.png)
