Résoudre les problèmes liés à la file d'attente des lettres mortes Amazon SQS et au redrive DLQ - 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.

Résoudre les problèmes liés à la file d'attente des lettres mortes Amazon SQS et au redrive DLQ

Les rubriques suivantes présentent les causes les plus courantes des problèmes liés à Amazon SQS DLQ et DLQ redrive, et expliquent comment les résoudre. Pour plus d'informations, consultez Comment résoudre les problèmes liés au redrive Amazon SQS DLQ ? dans le guide du centre de AWS connaissances.

Problèmes liés au DLQ

Découvrez les problèmes courants liés à la DLQ et découvrez comment les résoudre.

L'affichage des messages avec la console peut entraîner leur envoi dans une file d'attente de lettres mortes

Amazon SQS affiche un message dans la console selon la stratégie de redirection de la file d'attente correspondante. Par conséquent, si vous consultez un message dans la console le nombre de fois spécifié dans la politique de redrive de la file d'attente correspondante, le message est déplacé vers la file d'attente contenant des lettres mortes de la file d'attente correspondante.

Pour régler ce comportement, vous pouvez procéder de l'une des manières suivantes :

  • Augmentez le paramètre Maximum Receives pour la stratégie de redirection de la file d'attente correspondante.

  • N'affichez pas les messages de la file d'attente correspondante dans la console.

Les métriques NumberOfMessagesSent et NumberOfMessagesReceived d'une file d'attente de lettres mortes ne correspondent pas

Si vous envoyez un message à une file d'attente de lettres mortes manuellement, il est capturé par la métrique NumberOfMessagesSent. Toutefois, si un message est envoyé à une file d'attente de lettres mortes en raison de l'échec d'une tentative de traitement, il n'est pas capturé par cette métrique. Il est donc possible que les valeurs de NumberOfMessagesSent et NumberOfMessagesReceivedsoient différentes.

Création et configuration d'un redrive dans une file d'attente contenant des lettres mortes

Le redrive de la file d'attente de lettres mortes nécessite que vous définissiez les autorisations appropriées pour qu'Amazon SQS puisse recevoir des messages de la file d'attente de lettres mortes et envoyer des messages à la file d'attente de destination. Si vous ne disposez pas des autorisations appropriées, la tâche de redynamisation de la file d'attente contenant des lettres mortes peut échouer. Vous pouvez consulter l'état de votre tâche de retransmission des messages pour résoudre les problèmes, puis réessayer.

Gestion des défaillances des messages de file d'attente standard et FIFO

Les files d'attente standard continuent de traiter les messages jusqu'à l'expiration de la période de conservation. Ce traitement continu réduit les risques de blocage de la file d'attente par des messages non consommés. Le fait d'avoir un grand nombre de messages que le consommateur ne parvient pas à supprimer à plusieurs reprises peut augmenter les coûts et alourdir la charge matérielle. Pour réduire les coûts, déplacez les messages ayant échoué vers la file d'attente des lettres mortes.

Les files d'attente standard autorisent également un grand nombre de messages en vol. Si la majorité de vos messages ne peuvent pas être consommés et ne sont pas envoyés dans une file d'attente de lettres mortes, votre taux de traitement des messages peut ralentir. Pour maintenir l'efficacité de votre file d'attente, assurez-vous que votre application gère correctement le traitement des messages.

Les files d'attente FIFO garantissent un traitement unique en consommant les messages d'un groupe de messages dans l'ordre. Par conséquent, bien que le consommateur puisse continuer à récupérer les messages commandés dans un autre groupe de messages, le premier groupe de messages reste indisponible tant que le message bloquant la file d'attente n'est pas traité avec succès ou n'est pas déplacé vers une file d'attente de lettres mortes.

De plus, les files d'attente FIFO permettent de réduire le nombre de messages en vol. Pour éviter que votre file d'attente FIFO ne soit bloquée par un message, assurez-vous que votre application gère correctement le traitement des messages.

Pour plus d’informations, consultez Quotas de messages Amazon SQS et Utilisation des messages Amazon SQS.

Problèmes liés au DLQ-Redrive

Découvrez les problèmes courants liés au DLQ-Redrive et découvrez comment les résoudre.

AccessDenied problème d'autorisation

L'AccessDeniederreur se produit lorsque le redrive DLQ échoue parce que l'entité AWS Identity and Access Management (IAM) ne dispose pas des autorisations requises.

Exemple de message d'erreur :

Failed to create redrive task. Error code: AccessDenied - Queue Permissions to Redrive.

Les autorisations d'API suivantes sont requises pour effectuer des demandes de redrive DLQ :

Pour démarrer le redrive d'un message, procédez comme suit :

  • Autorisations relatives à la file d'attente des lettres mortes :

    • sqs:StartMessageMoveTask

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • kms:Decrypt— Lorsque la file d'attente contenant des lettres mortes ou la file source d'origine sont chiffrées.

  • Autorisations de file d'attente de destination :

    • sqs:SendMessage

    • kms:GenerateDataKey— Lorsque la file d'attente de destination est cryptée.

    • kms:Decrypt — Lorsque la file d'attente de destination est cryptée.

Pour annuler le renvoi d'un message en cours :

  • Autorisations relatives à la file d'attente des lettres mortes :

    • sqs:CancelMessageMoveTask

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • kms:Decrypt— Lorsque la file d'attente contenant des lettres mortes ou la file source d'origine sont chiffrées.

Pour afficher l'état du déplacement d'un message :

  • Autorisations relatives à la file d'attente des lettres mortes :

    • sqs:ListMessageMoveTasks

    • sqs:GetQueueAttributes

NonExistentQueue erreur

L'NonExistentQueueerreur se produit lorsque la file d'attente source Amazon SQS n'existe pas ou a été supprimée. Vérifiez et reconduisez vers une file d'attente Amazon SQS présente.

Exemple de message d'erreur :

Failed: AWS.SimpleQueueService.NonExistentQueue

CouldNotDetermineMessageErreur de source

L'CouldNotDetermineMessageSourceerreur se produit lorsque vous tentez de démarrer un redrive DLQ avec les scénarios suivants :

  • Un message Amazon SQS envoyé directement au DLQ avec API. SendMessage

  • Message issu de la rubrique AWS Lambda ou de la fonction Amazon Simple Notification Service (Amazon SNS) avec le DLQ configuré.

Pour résoudre cette erreur, choisissez Redrive vers une destination personnalisée lorsque vous démarrez le redrive. Entrez ensuite l'ARN de la file d'attente Amazon SQS pour déplacer tous les messages de la DLQ vers la file d'attente de destination.

Exemple de message d'erreur :

Failed: CouldNotDetermineMessageSource