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
Rubriques
File d'attente vide
Pour déterminer si une file d'attente est vide, utilisez une longue interrogation pour appeler l'ReceiveMessage
API. Vous pouvez également utiliser les ApproximateNumberOfMessagesDelayed
CloudWatch métriques ApproximateNumberOfMessagesVisible
ApproximateNumberOfMessagesNotVisible
, 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
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'DelaySeconds
attribut GetQueueAttributes
API 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.