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.
Nouvelle tentative de distribution des messages Amazon SNS
Amazon SNS définit une politique de distribution pour chaque protocole de distribution. La politique de distribution 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 distribution expire, Amazon SNS cesse de retenter la distribution 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 aux lettres mortes Amazon SNS.
Protocoles et politiques de distribution
Note
-
À cette exception près HTTP/S, vous ne pouvez pas modifier les politiques SNS-defined de livraison d'Amazon. Ne HTTP/S prend en charge que les politiques personnalisées. Consultez Création d'une politique HTTP/S de livraison.
-
Amazon SNS applique l'instabilité aux nouvelles tentatives de distribution. Pour plus d'informations, consultez la publication Exponential Backoff and Jitter
sur le blog AWS Architecture. -
Le temps total de nouvelle tentative de politique pour un HTTP/S terminal ne peut pas être supérieur à 3 600 secondes. Il s'agit d'une limite fixe qui ne peut pas être augmentée.
| Type de point de terminaison | Protocoles de distribution | Phase nouvelle tentative immédiate (sans délai) | Pre-backoff phase | Phase d'interruption | Post-backoff phase | Nombre total de tentatives |
|---|---|---|---|---|---|---|
| AWS terminaux gérés | ¹ | 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 client | 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 liées au protocole Firehose, Amazon SNS applique la même politique de livraison que pour les terminaux gérés par le client.
Étapes de la politique de distribution
Le diagramme suivant montre les phases d'une politique de distribution.
Chaque politique de distribution comprend quatre phases.
-
Phase de nouvelle tentative immédiate (sans délai) — Cette phase a lieu immédiatement après la tentative de livraison initiale. Il n'y a aucun délai entre les relances dans cette phase.
-
Pre-backoff phase — Cette phase fait suite à la phase de nouvelle tentative immédiate. Amazon SNS utilise cette phase pour tenter une série de nouvelles tentatives avant d'appliquer une fonction d'interruption. Cette phase spécifie le nombre de nouvelles tentatives et le délai entre elles.
-
Phase de rétrogradation : cette phase contrôle le délai entre les nouvelles 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.
-
Post-backoff phase — Cette phase fait suite à 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 politique HTTP/S de livraison
Vous pouvez définir la manière dont Amazon SNS essaie de remettre les messages aux HTTP/S terminaux à l'aide d'une politique de diffusion en quatre phases : sans délai, pré-annulation, annulation et post-annulation. Cette politique vous permet de modifier les paramètres de nouvelle tentative par défaut et de les personnaliser en fonction de la capacité de votre serveur HTTP.
Vous pouvez définir votre politique HTTP/S de diffusion sous la forme d'un objet JSON au niveau de la rubrique ou de l'abonnement :
-
Topic-level politique : s'applique à tous les HTTP/S abonnements liés au sujet. Utilisez l'action
CreateTopicouSetTopicAttributesAPI pour définir cette politique. -
Subscription-level politique — S'applique uniquement à un abonnement spécifique. Utilisez l'action
SubscribeouSetSubscriptionAttributesAPI pour définir cette politique.
Vous pouvez également utiliser la ressource AWS : :SNS : :Subscription dans vos modèles. CloudFormation
Vous devez personnaliser votre politique de livraison en fonction de la capacité de votre HTTP/S serveur :
-
Serveur unique pour tous les abonnements : si tous les HTTP/S abonnements d'une rubrique utilisent le même serveur, définissez la politique de diffusion en tant qu'attribut de rubrique afin de garantir la cohérence entre tous les abonnements.
-
Différents serveurs pour les abonnements — Si les abonnements ciblent différents serveurs, créez une politique de livraison unique pour chaque abonnement, adaptée à la capacité du serveur spécifique.
Vous pouvez également définir l'Content-Typeen-tête dans la politique de demande pour spécifier le type de média de la notification. Par défaut, Amazon SNS envoie toutes les notifications aux HTTP/S terminaux dont le type de contenu est défini sur. text/plain; charset=UTF-8 Vous pouvez toutefois modifier cette valeur par défaut à l'aide du headerContentType champ de la politique de demande.
L'objet JSON suivant définit une politique de livraison avec des nouvelles tentatives structurées en quatre phases :
-
No-delay phase — Réessayez 3 fois immédiatement.
-
Pre-backoff phase — Réessayez 2 fois avec un intervalle d'une seconde.
-
Phase d'arrêt : réessayez 10 fois avec des délais exponentiels allant de 1 à 60 secondes.
-
Post-backoff phase — Réessayez 35 fois avec un intervalle fixe de 60 secondes.
Amazon SNS fait au total 50 tentatives pour transmettre un message avant de le supprimer. Pour conserver les messages qui ne peuvent pas être remis après toutes les tentatives, configurez votre abonnement pour déplacer les messages non distribuables vers une file d'attente de lettres mortes (DLQ). Pour plus d’informations, consultez Files d'attente aux lettres mortes Amazon SNS.
Amazon SNS considère que toutes les erreurs 5XX et 429 (trop de demandes envoyées) peuvent être réessayées. Ces erreurs sont soumises à la politique de livraison. Toutes les autres erreurs sont considérées comme des échecs permanents et aucune nouvelle tentative ne sera tentée. Toutefois, les messages qu'Amazon SNS régule automatiquement en raison de ce maxReceivesPerSecond paramètre ne sont pas soumis à la politique de nouvelle tentative de livraison. Self-throttled les messages sont remis en file d'attente et continuent d'être distribués dans la mesure où la capacité le permet, sans que de nouvelles tentatives soient nécessaires.
Note
Cette politique de distribution utilise cette maxReceivesPerSecond propriété pour limiter le trafic de diffusion à une moyenne de 10 messages par seconde et par abonnement. Bien que ce mécanisme contribue à éviter que votre HTTP/S terminal ne soit submergé par un trafic élevé, il est conçu pour maintenir un débit de livraison moyen et n'impose pas de plafond strict. Des pics de trafic de diffusion dépassant la limite spécifiée peuvent survenir occasionnellement, en particulier si votre taux de publication est nettement supérieur à la limite de limitation.
Lorsque le trafic de publication (entrant) dépasse le taux de distribution (sortant), cela peut entraîner un arriéré de messages et une latence de livraison plus élevée. Pour éviter de tels problèmes, assurez-vous que la maxReceivesPerSecond valeur correspond aux exigences de capacité et de charge de travail de votre HTTP/S serveur.
L'exemple de politique de diffusion suivant remplace le type de contenu par défaut auquel la HTTP/S notification doit être application/json envoyée.
{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 }, "requestPolicy": { "headerContentType": "application/json" } }
La politique de livraison est composée d'une politique de nouvelle tentative, d'une politique d'accélération et d'une politique de demande. Au total, une politique de livraison comporte 9 attributs.
| Politique | 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 :
Par défaut : linéaire |
maxReceivesPerSecond
|
Nombre moyen maximum de livraisons de messages par seconde, par abonnement. | 1 ou plus Par défaut : aucune limitation (aucune limite de débit) |
headerContentType
|
Type de contenu de la notification envoyée aux HTTP/S terminaux. |
Si la politique de demande n'est pas définie, le type de contenu par défaut est Quand la remise des messages bruts est désactivée pour un abonnement (par défaut) ou quand la politique de remise est définie au niveau de la rubrique, les types de contenu d'en-tête pris en charge sont Quand la remise des messages bruts est activée pour un abonnement, les types de contenu suivants sont pris en charge :
|
Amazon SNS utilise la formule suivante pour calculer le nombre de nouvelles tentatives dans la phase d'interruption :
numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
Vous pouvez contrôler la fréquence des nouvelles tentatives pendant la phase d'arrêt à l'aide de trois paramètres :
-
minDelayTarget— Définit le délai de la première tentative de la phase de backoff. -
maxDelayTarget— Définit le délai pour la dernière tentative de nouvelle tentative pendant la phase de backoff. -
backoffFunction— Détermine l'algorithme utilisé par Amazon SNS pour calculer les délais de toutes les tentatives entre la première et la dernière tentative. Vous pouvez choisir parmi quatre fonctions de réessai/arrêt disponibles.
Le schéma suivant montre comment les différentes fonctions d'annulation des nouvelles tentatives affectent les délais entre les nouvelles tentatives pendant la phase d'annulation. La politique de livraison utilisée pour cet exemple inclut les paramètres suivants : 10 tentatives au total, un délai minimum de 5 secondes et un délai maximum de 260 secondes.
-
L'axe vertical indique le délai (en secondes) pour chaque nouvelle tentative.
-
L'axe horizontal représente la séquence de nouvelles tentatives, allant de la première à la dixième tentative.