Passer au contenu

Pourquoi mes messages Amazon SQS sont-ils envoyés de manière inattendue à une DLQ ?

Lecture de 2 minute(s)
0

J'ai configuré une file d'attente de lettres mortes (DLQ) Amazon Simple Queue Service (Amazon SQS). Mes messages Amazon SQS ont été déplacés de manière inattendue vers la DLQ, et je souhaite comprendre pourquoi.

Résolution

Vos messages Amazon SQS peuvent être déplacés vers la DLQ pour les raisons suivantes.

ReceiveCount dépasse maxReceiveCount

La valeur par défaut de maxReceiveCount est 10. Lorsque la valeur de ReceiveCount dépasse la valeur de maxReceiveCount pour une file d'attente, Amazon SQS déplace le message vers la DLQ. Pour résoudre ce problème, il est recommandé de définir maxReceiveCount à une valeur suffisamment élevée pour permettre les nouvelles tentatives Amazon SQS. Par exemple, si la valeur de maxReceiveCount est définie sur 1, l'échec de réception d'un message entraîne son déplacement vers la DLQ.

Votre fonction Lambda nécessite une configuration supplémentaire

Si vous utilisez une fonction AWS Lambda pour traiter les messages de votre file d'attente Amazon SQS, vous devrez peut-être reconfigurer votre fonction. Pour plus d’informations, consultez la section Pourquoi ma fonction Lambda effectue-t-elle de nouvelles tentatives sur des messages Amazon SQS valides et les place-t-elle dans ma file d’attente de lettres mortes ?

Vous avez utilisé la console de gestion AWS pour consulter les messages SQS

Les messages SQS que vous consultez sur la console de gestion AWS peuvent être déplacés vers la DLQ car ils sont pris en compte dans la stratégie de redirection de la file d'attente. Vous pouvez augmenter la valeur de Réceptions maximales pour la stratégie de redirection DLQ jusqu'à 1 000. Pour plus d'informations, consultez la section Configurer une file d'attente de lettres mortes à l'aide de la console Amazon SQS.

Vous avez essayé de supprimer des messages SQS dont le descripteur ReceiptHandle est arrivé à expiration ou une fois le délai de visibilité expiré

Les messages sont déplacés vers la DLQ après de nouvelles tentatives. L'erreur QueueDoesNotExist peut se produire lorsque vous effectuez une opération DeleteMessage avec un descripteur ReceiptHandle antérieur de la file d'attente principale. Vous devez supprimer les messages dans la fenêtre VisibilityTimeout configurée. Pour plus d’informations, consultez la section Comment résoudre l'erreur QueueDoesNotExist lorsque je passe des appels d'API à ma file d'attente Amazon SQS ?

Informations connexes

Utilisation des files d'attente aux lettres mortes dans Amazon SQS