Pourquoi ma file d'attente FIFO Amazon SQS ne renvoie-t-elle pas tous les messages ou ceux d'autres groupes de messages ?
Date de la dernière mise à jour : 26/08/2021
Ma file d'attente FIFO (premier entré, premier sorti) Amazon Simple Queue Service (Amazon SQS) ne renvoie pas certains messages lorsque j'appelle l'API ReceiveMessage. Pourquoi ma file d'attente SQS FIFO ne renvoie-t-elle pas tous les messages provenant d'un ID de groupe de messages spécifique ou d'autres groupes de messages ?
Résolution
Pour les files d'attente FIFO, vous ne pouvez pas demander à recevoir des messages provenant d'un ID de groupe de messages spécifique. Lorsque vous spécifiez un paramètre MaxNumberOfMessages lors de l'appel d'API ReceiveMessage, SQS renvoie autant de messages avec le même ID de groupe de messages que possible. Les autres consommateurs ou autres appels ReceiveMessage peuvent ensuite traiter des messages avec un ID de groupe de messages différent.
Pour les files d'attente FIFO, lorsque vous recevez un message appartenant à un ID de groupe de messages spécifique, ayez présents à l'esprit le point suivant :
- Vous devez supprimer ou déplacer des messages dans l'appel de réception actuel avant de pouvoir recevoir d'autres messages provenant du même ID de groupe.
Remarque : l'état disponible en vol des messages doit être modifié. - Vous ne pouvez pas recevoir de messages dans d'autres groupes de messages.
Une file d'attente FIFO parcourt les 20 000 premiers messages pour déterminer le groupe de messages disponible. Si tous les groupes de messages des 20 000 premiers messages sont bloqués en raison de messages en vol, les messages des autres groupes au-delà des 20 000 premiers ne seront pas renvoyés. Pour en savoir plus, consultez la section Éviter d'avoir un nombre important de messages en attente avec le même ID de groupe de messages.
Exemple A
Une file d'attente FIFO contient un total de 20 001 messages. Les 20 000 premiers messages appartiennent au groupe de messages 1 et le dernier appartient au groupe de messages 2. Lorsque vous tentez de recevoir des messages de la file d'attente, vous ne recevez qu'un message du groupe 1. Tous les appels ReceiveMessage consécutifs entraînent des réceptions vides. Cela se produit parce que FIFO examine uniquement les messages appartenant au groupe 1 et que ce dernier est bloqué par l'appel en cours.
Exemple B
Une file d'attente FIFO contient un total de 20 000 messages. Les 19 999 premiers messages appartiennent au groupe de messages 1 et le dernier appartient au groupe de messages 2. Lorsque vous tentez de recevoir des messages de la file d'attente, le premier appel ReceiveMessage reçoit un message appartenant au groupe 1. Le deuxième appel ReceiveMessage reçoit un message appartenant au groupe 2. Tous les appels ReceiveMessage supplémentaires entraînent des réceptions vides, car les deux groupes sont désormais bloqués par les appels actuels.
Informations connexes
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?