Détails de commande des messages Amazon SNS pour les rubriques FIFO - 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.

Détails de commande des messages Amazon SNS pour les rubriques FIFO

Une rubrique FIFO Amazon SNS distribue toujours des messages aux files d'attente Amazon SQS abonnées dans l'ordre exact dans lequel les messages sont publiés dans la rubrique et une seule fois. Avec une file d'attente FIFO Amazon SQS abonnée, le consommateur de la file d’attente reçoit les messages dans l'ordre exact dans lequel ils sont envoyés à la file d'attente, sans doublons. Avec une file d'attente standard SQS abonnée, le consommateur de la file d'attente peut recevoir des messages dans le désordre et ce, plusieurs fois. Cela permet de mieux dissocier les abonnés des diffuseurs de publication, offrant ainsi aux abonnés une plus grande flexibilité en termes de consommation de messages et d'optimisation des coûts, comme le montre le schéma suivant basé sur le Exemple de cas d'utilisation de la rubrique Amazon SNS FIFO.

Exemple de système de distribution de messages dans une rubrique Amazon SNS FIFO (First-In-First-Out), illustrant comment les messages sont systématiquement envoyés dans un ordre strict aux files d'attente FIFO Amazon SQS. Cela contraste avec le comportement d'une file d'attente standard Amazon SQS, où les messages peuvent arriver dans le mauvais ordre plusieurs fois. L'exemple présente trois types d'abonnés différents (une fonction d'analyse, une application de vente en gros et une application de vente au détail) démontrant comment chacun reçoit des messages, soit dans un ordre strict, soit dans le meilleur ordre, en fonction du type de file d'attente auquel il est abonné.

Notez qu'il n'y a pas d'ordre implicite des abonnés. L'exemple suivant montre que le message m1 est d'abord distribué à l'abonné de gros, puis à l'abonné de détail, puis à l’abonné d’analyse. Le message m2 est d'abord distribué à l'abonné de détail, puis à l'abonné de gros et enfin à l’abonné d’analyse. Bien que les deux messages soient distribué aux abonnés dans un ordre différent, l'ordre des messages est conservé pour chaque abonné FIFO Amazon SQS. Chaque abonné est perçu indépendamment de tout autre abonné.

Exemple de la façon dont les rubriques Amazon SNS FIFO et les différents types d'abonnés, notamment Amazon SQS FIFO et les files d'attente standard, gèrent la commande et la livraison des messages. Cela indique que les messages sont publiés dans un sujet et envoyés à différents types de files d'attente, ce qui garantit la livraison des commandes pour les files d'attente FIFO et le meilleur effort de commande pour les files d'attente standard. Cette configuration prend en charge les scénarios d'une plate-forme de commerce électronique où différents composants nécessitent une livraison fiable des messages dans un ordre spécifique pour un traitement précis.

Si un abonné de file d'attente Amazon SQS devient inaccessible, il peut se désynchroniser. Par exemple, supposons que le propriétaire de la file d'attente d'application de gros modifie par erreur la politique de file d'attente Amazon SQS d'une manière qui empêche le principal de service Amazon SNS de distribuer des messages à la file d'attente. Dans ce cas, les envois des mises à jour des prix à la file d'attente de gros échouent, tandis que les envois aux files d’attente de détail et d’analyse réussissent, ce qui entraîne une désynchronisation des abonnés. Lorsque le propriétaire de la file d'attente de l'application de gros corrige sa politique de file d'attente, Amazon SNS reprend la distribution des messages à la file d'attente abonnée. Tous les messages publiés dans la rubrique qui ciblent la file d'attente qui n'était pas correctement configurée sont supprimés, sauf si l'abonnement correspondant dispose d'une file d'attente de lettres mortes configurée.

Exemple de comportement de distribution de messages dans une configuration Amazon SNS FIFO où les messages sont publiés à différents types d'abonnés (vente en gros, vente au détail et services d'analyse) via les files d'attente Amazon SQS. Il met en évidence l'impact d'une mauvaise configuration de la politique de file d'attente sur la synchronisation de livraison des messages entre les différentes files d'abonnés. L'exemple montre comment la livraison des messages échoue pour l'abonné grossiste en raison d'une erreur de politique, mais continue avec succès pour les abonnés du commerce de détail et des services d'analyse, soulignant l'importance d'une configuration de file d'attente correcte pour garantir la synchronisation de la diffusion des données. Ce scénario souligne la capacité des sujets FIFO à garantir une livraison commandée et en une seule fois dans des circonstances normales, ainsi que les conséquences des erreurs de configuration.

Vous pouvez avoir plusieurs applications (ou plusieurs threads au sein d'une même application) qui publient des messages vers une rubrique FIFO SNS en parallèle. Lorsque vous effectuez cette opération, vous déléguez effectivement le séquençage des messages au service Amazon SNS. Pour déterminer la séquence de messages établie, vous pouvez vérifier le numéro de séquence.

Le numéro de séquence est un grand numéro, non consécutif, qu'Amazon SNS attribue à chaque message. La longueur du numéro de séquence est de 128 bits et continue d'augmenter pour chaque groupe de messages. Le numéro de séquence est transmis aux files d'attente Amazon SQS abonnées dans le corps du message. Toutefois, si vous activez la distribution de messages bruts, le message qui est distribué à la file d'attente Amazon SQS n'inclut pas le numéro de séquence ou d'autres métadonnées de message Amazon SNS.

Exemple de plusieurs fonctions Lambda publiant des messages sur une rubrique Amazon SNS FIFO (First In, First Out), qui transmet ensuite ces messages à une file d'attente FIFO Amazon SQS, en préservant l'ordre strict du traitement des messages. Cette configuration est utilisée pour garantir que les messages sont traités dans l'ordre exact dans lequel ils sont envoyés aux différents composants d'une application, les numéros de séquence indiquant l'ordre de chaque message au sein d'un groupe. Ce type de configuration est crucial pour les applications où l'ordre des opérations et des messages doit être strictement maintenu pour garantir la cohérence.

Les rubriques FIFO d'Amazon SNS définissent l'ordre dans le contexte d'un groupe de messages. Pour de plus amples informations, consultez Regroupement de messages Amazon SNS pour les rubriques FIFO.