Configuration d'un long sondage 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.

Configuration d'un long sondage dans Amazon SQS

Lorsque le temps d'attente pour l'action de l'API ReceiveMessage est supérieur à 0, une recherche prolongée est activée. Le temps d'attente maximal pour la recherche prolongée est de 20 secondes. La recherche prolongée permet de réduire le coût d'utilisation d'Amazon SQS en éliminant le nombre de réponses vides (lorsqu'il n'y a aucun message disponible pour une demande ReceiveMessage) et de fausses réponses vides (lorsque les messages sont disponibles dans la file d'attente, mais ne sont pas inclus dans une réponse). Pour plus d’informations, consultez Recherches courtes et longues sur Amazon SQS.

Pour garantir un traitement optimal des messages, utilisez les stratégies suivantes :

  • Dans la plupart des cas, vous pouvez définir le délai d'attente ReceiveMessage à 20 secondes. Si un délai de 20 secondes est trop long pour votre application, définissez un délai d'attente ReceiveMessage plus court (1 seconde au minimum). Si vous n'utilisez pas de AWS SDK pour accéder à Amazon SQS, ou si vous configurez AWS un SDK pour réduire le temps d'attente, il se peut que vous deviez modifier votre client Amazon SQS pour autoriser des demandes plus longues ou utiliser un temps d'attente plus court pour les longs sondages.

  • Si vous implémentez l'attente active de longue durée pour plusieurs files d'attente, utilisez un thread pour chacune d'elles plutôt qu'un seul thread pour toutes les files d'attente. L'utilisation d'un seul thread pour chaque file d'attente permet à votre application de traiter les messages de chacune des files d'attente dès qu'ils sont disponibles. En revanche, en utilisant un seul thread pour l'interrogation de plusieurs files d'attente peut mettre votre application dans l'incapacité de traiter les messages disponibles dans d'autres files d'attente lorsque l'application attend (pendant une durée pouvant atteindre 20 secondes) la file d'attente qui ne comporte aucun message.

Important

Pour éviter les erreurs HTTP, assurez-vous que le temps d'attente de réponse HTTP pour les demandes ReceiveMessage est plus long que le paramètre WaitTimeSeconds. Pour plus d'informations, consultez ReceiveMessage.