Utilisation de files d'attente contenant des lettres mortes 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.

Utilisation de files d'attente contenant des lettres mortes dans Amazon SQS

Amazon SQS prend en charge les files d'attente de lettres mortes (DLQ), que les files d'attente sources peuvent cibler pour les messages qui ne sont pas traités correctement. Les DLQ sont utiles pour le débogage de votre application car vous pouvez isoler les messages non consommés afin de déterminer pourquoi le traitement a échoué. Pour des performances optimales, il est recommandé de conserver la même file d'attente source et le DLQ dans la même Compte AWS région. Une fois que les messages se trouvent dans une file d'attente de lettres mortes, vous pouvez :

  • Rechercher dans les journaux les exceptions qui ont pu entraîner le déplacement de messages dans une file d'attente de lettres mortes.

  • Analysez le contenu des messages placés dans la file d'attente des lettres mortes pour diagnostiquer les problèmes liés à l'application.

  • Déterminer si vous avez donné suffisamment de temps à votre consommateur pour traiter les messages.

  • Déplacez les messages hors de la file d'attente des lettres mortes en utilisant le redrive de la file d'attente des lettres mortes.

Vous devez d'abord créer une nouvelle file d'attente avant de la configurer en tant que file d'attente contenant des lettres mortes. Pour plus d'informations sur la configuration d'une file d'attente de lettres mortes à l'aide de la console Amazon SQS, consultez Découvrez comment configurer une file d'attente contenant des lettres mortes à l'aide de la console Amazon SQS. Pour obtenir de l'aide sur les files d'attente de lettres mortes, par exemple sur la façon de configurer une alarme pour tout message déplacé vers une file d'attente de lettres mortes, consultez. Créez des alarmes pour les files d'attente de lettres mortes à l'aide d'Amazon CloudWatch

Utilisation de politiques pour les files d'attente de lettres mortes

Utilisez une politique de redrive pour spécifier lemaxReceiveCount. maxReceiveCountC'est le nombre de fois qu'un consommateur peut recevoir un message depuis une file d'attente source avant qu'il ne soit déplacé vers une file d'attente de lettres mortes. Par exemple, si le paramètre maxReceiveCount est défini sur une valeur faible telle que 1, l'échec de réception d'un message entraîne son transfert dans la file d'attente des lettres mortes. Pour garantir la résilience de votre système face aux erreurs, définissez une valeur suffisamment élevée pour maxReceiveCount afin de permettre un nombre suffisant de tentatives.

La stratégie d'autorisation de redirection spécifie quelles files d'attente source peuvent accéder à la file d'attente de lettres mortes. Vous pouvez choisir d'autoriser toutes les files d'attente sources, d'autoriser des files d'attente sources spécifiques ou de refuser à toutes les files d'attente sources l'utilisation de la file d'attente de lettres mortes. Par défaut, toutes les files d'attente sources peuvent utiliser la file d'attente contenant des lettres mortes. Si vous choisissez d'autoriser des files d'attente spécifiques à l'aide de byQueue cette option, vous pouvez spécifier jusqu'à 10 files d'attente sources à l'aide de la file d'attente source Amazon Resource Name (ARN). Si vous spécifiez denyAll, la file d'attente ne peut pas être utilisée comme file d'attente de lettres mortes.

Comprendre les périodes de rétention des messages pour les files d'attente de lettres mortes

Pour les files d'attente standard, l'expiration d'un message est toujours basée sur son horodatage de mise en file d'attente d'origine. Lorsqu'un message est déplacé vers une file d'attente de lettres mortes, l'horodatage de la mise en file d'attente reste inchangé. La ApproximateAgeOfOldestMessage métrique indique à quel moment le message a été placé dans la file d'attente des lettres mortes, et non à quel moment le message a été initialement envoyé. Supposons, par exemple, qu'un message passe 1 journée dans la file d'attente d'origine avant d'être déplacé vers une file d'attente de lettres mortes. Si la période de conservation de la file d'attente de lettres mortes est de 4 jours, le message est supprimé de la file d'attente de lettres mortes au bout de 3 jours et le paramètre ApproximateAgeOfOldestMessage est défini sur 3 jours. Il est donc recommandé de toujours définir la période de rétention d'une file d'attente de lettres mortes de manière à ce qu'elle soit plus longue que la période de rétention de la file d'attente d'origine.

Pour les files d'attente FIFO, l'horodatage de la mise en file d'attente est réinitialisé lorsque le message est déplacé vers une file d'attente de lettres mortes. La métrique ApproximateAgeOfOldestMessage indique à quel moment le message a été placé dans la file d'attente de lettres mortes. Dans le même exemple ci-dessus, le message est supprimé de la file d'attente de lettres mortes au bout de 4 jours et le paramètre ApproximateAgeOfOldestMessage est défini sur 4 jours.