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.
Scénarios de reprise en cas de panne dans Amazon SQS
Le processus de déduplication dans les files d'attente FIFO est prioritaire. Lors de la conception de votre application, veillez à ce que le producteur et le consommateur puissent se rétablir après une panne du client ou du réseau sans créer de doublons ni d'erreurs de traitement.
Considérations relatives aux producteurs
-
Amazon SQS applique une fenêtre de déduplication de 5 minutes.
-
Si un producteur réessaie une
SendMessage
demande après 5 minutes, Amazon SQS la traite comme un nouveau message, ce qui peut créer des doublons.
Considérations relatives aux consommateurs
-
Si un client ne traite pas un message avant l'expiration du délai de visibilité, un autre client peut le recevoir et le traiter, ce qui entraîne un double traitement.
-
Ajustez le délai de visibilité en fonction du temps de traitement de votre demande.
-
Utilisez l'
ChangeMessageVisibility
API pour prolonger le délai d'attente pendant qu'un message est toujours en cours de traitement. -
Si le traitement d'un message échoue à plusieurs reprises, acheminez-le vers une file d'attente de lettres mortes (DLQ) au lieu de le retraiter indéfiniment.
-
Le producteur doit connaître l'intervalle de déduplication de la file d'attente. Amazon SQS a un intervalle de déduplication de 5 minutes. De nouvelles tentatives de demandes de
SendMessage
après expiration du délai de déduplication peuvent introduire des messages en double dans la file d'attente. Par exemple, un appareil mobile dans une voiture envoie des messages dont l'ordre est important. Si la voiture perd la connectivité cellulaire pendant un certain temps avant de recevoir une confirmation, une nouvelle tentative de la demande après la récupération de la connectivité cellulaire peut créer un doublon. -
Le consommateur doit disposer d'un délai de visibilité réduisant le risque de ne pas pouvoir traiter des messages avant l'expiration de ce délai. Vous pouvez étendre le délai de visibilité pendant que les messages sont en cours de traitement en appelant l'action
ChangeMessageVisibility
. Toutefois, si le délai de visibilité expire, un autre consommateur peut immédiatement commencer à traiter les messages, un message étant alors traité plusieurs fois. Pour éviter ce scénario, configurez une file d'attente de lettres mortes.