Résoudre les problèmes liés aux messages non renvoyés lors d'un appel d'API Amazon ReceiveMessage 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.

Résoudre les problèmes liés aux messages non renvoyés lors d'un appel d'API Amazon ReceiveMessage SQS

Les rubriques suivantes décrivent les causes les plus courantes pour lesquelles un message Amazon SQS peut ne pas être renvoyé aux clients, ainsi que la manière de les résoudre. Pour plus d'informations, consultez Pourquoi ne puis-je pas recevoir de messages depuis ma file d'attente Amazon SQS ? dans le guide du centre de AWS connaissances.

File d'attente vide

Pour déterminer si une file d'attente est vide, utilisez une longue interrogation pour appeler l'ReceiveMessageAPI. Vous pouvez également utiliser les ApproximateNumberOfMessagesDelayed CloudWatch métriques ApproximateNumberOfMessagesVisibleApproximateNumberOfMessagesNotVisible, et. Si toutes les valeurs métriques sont définies sur 0 pendant plusieurs minutes, la file d'attente est considérée comme vide.

Limite en vol atteinte

Si vous utilisez un long sondage et si la limite de vol de la file d'attente (20 000 pour le FIFO, 120 000 pour le standard par défaut) est dépassée, Amazon SQS ne renverra pas de messages d'erreur dépassant les limites de quota.

Retard du message

Si la file d'attente Amazon SQS est configurée comme une file d'attente différée, ou si les messages ont été envoyés avec des temporisateurs, les messages ne sont pas visibles tant que le délai n'est pas écoulé. Pour vérifier si une file d'attente est configurée en tant que file d'attente différée, utilisez l'DelaySecondsattribut GetQueueAttributesAPI ou depuis la console de file d'attente sous Délai de livraison. Vérifiez la ApproximateNumberOfMessagesDelayed CloudWatch métrique pour savoir si des messages sont retardés.

Le message est en cours

Si un autre consommateur a interrogé le message, celui-ci sera diffusé ou invisible pendant la période d'expiration du délai de visibilité. Les sondages supplémentaires peuvent renvoyer un reçu vide. Vérifiez la CloudWatch métrique ApproximateNumberOfMessagesVisible pour connaître le nombre de messages pouvant être reçus. Dans le cas des files d'attente FIFO, si un message portant l'ID du groupe de messages est en cours de traitement, aucun autre message ne sera renvoyé, sauf si vous le supprimez ou s'il devient visible. Cela est dû au fait que l'ordre des messages est maintenu au niveau du groupe de messages dans une file d'attente FIFO.

Méthode de sondage

Si vous utilisez un sondage court, (le nombre de WaitTimesecondes est égal à 0) Amazon SQS échantillonne un sous-ensemble de ses serveurs et renvoie des messages provenant uniquement de ces serveurs. Par conséquent, il se peut que vous ne receviez pas les messages même s'ils sont disponibles pour être reçus. Les demandes de sondage suivantes renverront les messages.

Si vous utilisez un long sondage, Amazon SQS interroge tous les serveurs et envoie une réponse après avoir collecté au moins un message disponible, et jusqu'au nombre maximum spécifié. Si la valeur de ReceiveMessage WaitTimeSeconds est trop faible, il est possible que vous ne receviez pas tous les messages disponibles.