nouvelles tentatives de livraison des messages Amazon SNS - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

nouvelles tentatives de livraison des messages Amazon SNS

Amazon SNS définit unePolitique de livraisonpour chaque protocole de livraison. La stratégie de livraison définit comment Amazon SNS tente à nouveau de livrer des messages lorsque des erreurs côté serveur se produisent (lorsque le système qui héberge le point de terminaison abonné devient indisponible). Lorsque la politique de livraison est épuisée, Amazon SNS cesse de réessayer la livraison et rejette le message, sauf si une file d'attente de lettres mortes est jointe à l'abonnement. Pour plus d'informations, consultez Files d'attente de lettres mortes Amazon SNS (DLQ).

Protocoles et stratégies de livraison

Note
  • À l'exception de HTTP/S, vous ne pouvez pas modifier les stratégies de livraison définies par Amazon SNS. Seul HTTP/S prend en charge les stratégies personnalisées. Voir Création d'une stratégie de livraison HTTP/S.

  • Amazon SNS applique une nuvelle aux nouvelles tentatives de livraison. Pour plus d'informations, consultez le billet Exponential Backoff and Jitter sur le blog AWS Architecture.

Type de point de terminaison Protocoles de livraison Phase nouvelle tentative immédiate (sans délai) Phase de pré-interruption Phase d'interruption Phase de post-interruption Nombre total de tentatives
Points de terminaison gérés par AWS Firehose¹ Amazon Kinesis 3 fois, sans délai 2 fois, 1 seconde d'intervalle 10 fois, avec retour exponentiel, de 1 seconde à 20 secondes 100 000 fois, 20 secondes d'intervalle 100 015 fois, plus de 23 jours
AWS Lambda
Amazon SQS
Points de terminaison gérés par le SMTP 0 fois, sans délai 2 fois, 10 secondes d'intervalle 10 fois, avec retour exponentiel, de 10 secondes à 600 secondes (10 minutes) 38 fois, 600 secondes (10 minutes) d'intervalle 50 tentatives, plus de 6 heures
SMS
Push mobile

¹ Pour les erreurs de limitation avec le protocole Kinesis Data Firehose, Amazon SNS utilise la même politique de livraison que pour les terminaux gérés par le client.

Étapes de la stratégie de livraison

Le diagramme suivant montre les phases d'une stratégie de livraison.

Chaque politique de livraison comprend quatre phases.

  1. Phase nouvelle tentative immédiate (sans délai) : cette phase se produit immédiatement après la tentative de diffusion initiale. Il n'y a aucun délai entre les relances dans cette phase.

  2. Phase de pré-interruption— Cette phase suit la phase de rétentative immédiate. Amazon SNS utilise cette phase pour tenter une série de nouvelles tentatives avant d'appliquer une fonction de backoff. Cette phase spécifie le nombre de nouvelles tentatives et le délai entre elles.

  3. Phase d'interruption— Cette phase contrôle le délai entre les tentatives à l'aide de la fonction retry-backoff. Cette phase définit un délai minimum, un délai maximum et une fonction d’interruption des nouvelles tentatives qui définit la vitesse à laquelle le délai augmente depuis le délai minimum au délai maximum. La fonction d’interruption peut être arithmétique, exponentielle, géométrique ou linéaire.

  4. Phase de post-interruption— Cette phase suit la phase d'arrêt. Il spécifie un certain nombre de nouvelles tentatives et la longueur du délai entre elles. Il s’agit de la phase finale.

Création d'une stratégie de livraison HTTP/S

Vous pouvez utiliser une stratégie de livraison et ses quatre phases pour définir comment Amazon SNS tente à nouveau de livrer des messages aux points de terminaison HTTP/S. Amazon SNS vous permet de remplacer la stratégie de nouvelle tentative par défaut pour les points de terminaison HTTP lorsque vous souhaitez, par exemple, la personnaliser en fonction de la capacité de votre serveur HTTP.

Vous pouvez définir votre stratégie de livraison HTTP/S en tant qu'objet JSON au niveau de l'abonnement ou de la rubrique. Lorsque vous définissez la stratégie au niveau de la rubrique, elle s'applique à tous les abonnements HTTP/S associés à la rubrique.

Vous devez personnaliser votre stratégie de livraison en fonction de la capacité de votre serveur HTTP/S. Vous pouvez définir la stratégie en tant qu'attribut d’une rubrique ou d'un abonnement. Si tous les abonnements HTTP/S de votre rubrique ciblent le même serveur HTTP/S, nous vous recommandons de définir la stratégie de remise en tant qu'attribut de rubrique, afin qu'elle reste valable pour tous les abonnements HTTP/S de la rubrique. Sinon, vous devez composer une stratégie de livraison pour chaque abonnement HTTP/S de votre rubrique, en fonction de la capacité du serveur HTTP/S ciblé par la stratégie.

L'objet JSON suivant représente une stratégie de livraison qui indique à Amazon SNS de réaliser une nuvelle une tentative de livraison HTTP/S échouée, comme suit :

  1. 3  fois immédiatement dans la phase sans délai

  2. 2 fois (1 seconde d'intervalle) dans la phase de pré-interruption

  3. 10 fois (avec interruption exponentielle de 1 à 60 secondes)

  4. 35 fois (60 secondes d'intervalle) dans la phase de post-arrêt

Dans cet exemple de stratégie de livraison, Amazon SNS effectue un total de 50 tentatives avant de rejeter le message. Pour conserver le message après l'épuisement des tentatives spécifiées dans la stratégie de remise, configurez votre abonnement pour déplacer les messages non délivrables vers une file d'attente de lettres mortes (DLQ). Pour plus d'informations, consultez Files d'attente de lettres mortes Amazon SNS (DLQ).

Note

Cette politique de livraison indique également à Amazon SNS de limiter les livraisons à 10 par seconde au maximum, à l'aide de lamaxReceivesPerSecondPropriété. Ce taux d'auto-limitation pourrait entraîner plus de messages publiés (trafic entrant) que de messages délivrés (trafic sortant). Lorsqu'il y a plus de trafic entrant que sortant, votre abonnement peut accumuler un important arriéré de messages, ce qui peut entraîner une latence élevée de remise des messages. Dans vos stratégies de livraison, assurez-vous de spécifier une valeur pourmaxReceivesPerSecondqui n'a pas d'impact négatif sur votre charge de travail.

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

La stratégie de livraison est composée d'une stratégie de nouvelle tentative et d'une stratégie de limitation. Au total, une stratégie de livraison comprend huit attributs.

Policy Description Contrainte
minDelayTarget Délai minimal pour une nouvelle tentative.

Unité : Secondes

1 jusqu'au délai maximal

Par défaut: 20

maxDelayTarget Délai maximal pour une nouvelle tentative.

Unité : Secondes

Délai minimal jusqu'à 3 600

Par défaut: 20

numRetries Le nombre total de nouvelles tentatives, y compris les tentatives immédiates, antérieures à l’interruption, pendant l’interruption et postérieures à l’interruption. 0 à 100

Par défaut: 3

numNoDelayRetries Le nombre de nouvelles tentatives à effectuer immédiatement, sans délai entre elles. 0 ou plus

Par défaut: 0

numMinDelayRetries Nombre de nouvelles tentatives dans la phase antérieure à l’interruption, avec le délai minimum entre elles spécifié. 0 ou plus

Par défaut: 0

numMaxDelayRetries Le nombre de nouvelles tentatives dans la phase postérieure à l’interruption, avec le délai maximum entre elles. 0 ou plus

Par défaut: 0

backoffFunction Modèle d’interruption entre les nouvelles tentatives.

L'une des quatre options suivantes :

  • arithmétique

  • exponentielle

  • géométrique

  • linéaire

Par défaut : linéaire

maxReceivesPerSecond Nombre maximal de livraisons par seconde, par abonnement. 1 ou plus

Par défaut: Pas de limitation des

Amazon SNS utilise la formule suivante pour calculer le nombre de nouvelles tentatives dans la phase d'arrêt :

numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries

Vous pouvez utiliser trois paramètres pour contrôler la fréquence des nouvelles tentatives dans la phase d’interruption.

  • minDelayTarget : définit le délai associé à la première nouvelle tentative dans la phase d'arrêt.

  • maxDelayTarget : définit le délai associé à la nouvelle tentative finale dans la phase d'arrêt.

  • backoffFunction : définit l'algorithme utilisé par Amazon SNS pour calculer les délais associés à toutes les nouvelles tentatives entre la première et la dernière tentative dans la phase d'arrêt. Vous pouvez utiliser l'une des quatre fonctions d’interruption de nouvelle tentative.

Le diagramme suivant montre comment chaque fonction d'arrêt de nouvelle tentative affecte le délai associé aux nouvelles tentatives pendant la phase d'arrêt : Stratégie de livraison avec le nombre total de nouvelles tentatives défini sur 10, le délai minimum défini sur 5 secondes et le délai maximum défini sur 260 secondes. L'axe vertical représente le délai, en secondes, associé à chacune des 10 relances. L'axe horizontal représente le nombre de nouvelles tentatives, de la première à la dixième.