Logique de distribution des files d'attente FIFO dans Amazon SQS - Amazon Simple Queue 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.

Logique de distribution des files d'attente FIFO dans Amazon SQS

Les concepts suivants peuvent vous aider à mieux comprendre l'envoi et la réception de messages à partir de FIFO.

Envoi de messages

Si plusieurs messages sont envoyés à la suite vers une file d'attente FIFO, chacun avec un ID de déduplication du message différent, Amazon SQS stocke les messages et confirme la transmission. Puis, chaque message peut être reçu et traité dans l'ordre exact dans lequel les messages ont été transmis.

Dans les files d'attente FIFO, les messages sont classés selon l'ID de groupe de messages. Si plusieurs hôtes (ou threads différents sur le même hôte) envoient des messages avec le même ID de groupe de messages à une file d'attente FIFO, Amazon SQS stocke les messages dans l'ordre dans lequel ils arrivent pour le traitement. Pour qu'Amazon SQS conserve l'ordre d'envoi et de réception des messages, chaque producteur doit utiliser un ID de groupe de messages unique pour envoyer tous ses messages.

La logique de la file d'attente FIFO s'applique uniquement par ID de groupe de messages. Chaque ID de groupe de messages représente un groupe de messages classés différent au sein d'une file d'attente Amazon SQS. Pour chaque ID de groupe de messages, tous les messages sont envoyés et reçus en suivant rigoureusement l'ordre établi. Cependant, les messages aux ID de groupe de messages différents pourront être envoyés et reçus dans le désordre. Vous devez associer un ID de groupe de messages à un message. Si vous ne spécifiez pas d'ID de groupe de messages, l'action échoue. Si vous avez besoin d'un seul groupe de messages classés, indiquez le même ID de groupe de messages pour les messages envoyés à la file d'attente FIFO.

Réception de messages

Vous ne pouvez pas demander à recevoir des messages avec un ID de groupe de messages spécifique.

Lorsque vous recevez des messages d'une file d'attente FIFO avec plusieurs ID de groupe de messages, Amazon SQS tente d'abord de renvoyer autant de messages avec le même ID de groupe de messages que possible. Cela permet aux autres utilisateurs de traiter les messages avec un ID de groupe de messages différent. Lorsque vous recevez un message avec un ID de groupe de messages, aucun autre message correspondant au même ID de groupe de messages n'est renvoyé, sauf si vous supprimez le message ou s'il devient visible.

Note

Il est possible de recevoir jusqu'à 10 messages lors d'un seul appel en utilisant le paramètre de demande MaxNumberOfMessages de l'action ReceiveMessage. Ces messages conservent leur ordre FIFO et peuvent avoir le même ID de groupe de messages. Par conséquent, s'il y a moins de 10 messages disponibles avec le même ID de groupe de messages, vous pouvez recevoir des messages provenant d'un autre ID de groupe, dans le même lot de 10 messages, mais toujours dans l'ordre FIFO.

Multiples nouvelles tentatives

Les files d'attente FIFO permettent au producteur ou au consommateur d'effectuer plusieurs tentatives :

  • Si le producteur détecte l'échec d'une action SendMessage, il peut réessayer d'en envoyer autant de fois que nécessaire, en utilisant le même identifiant de déduplication des messages. En supposant que le producteur reçoive au moins un accusé de réception avant l'expiration de l'intervalle de déduplication, les tentatives multiples n'affectent pas l'ordre des messages et n'introduisent pas de doublons.

  • Si le consommateur détecte l'échec d'une action ReceiveMessage, il peut réessayer autant de fois que nécessaire, en utilisant le même identifiant de tentative de demande de réception. En supposant que le consommateur reçoive au moins un accusé de réception avant l'expiration du délai de visibilité, les tentatives multiples n'ont aucune incidence sur l'ordre des messages.

  • Lorsque vous recevez un message avec un ID de groupe de messages, aucun autre message correspondant au même ID de groupe de messages n'est renvoyé, sauf si vous supprimez le message ou s'il devient visible.