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.
Recherches courtes et longues sur Amazon SQS
Amazon SQS propose des options d'interrogation courtes et longues pour recevoir des messages depuis une file d'attente. Tenez compte des exigences de réactivité et de rentabilité de votre application lorsque vous choisissez entre ces deux options de sondage :
-
Interrogation courte (par défaut) : la
ReceiveMessage
demande interroge un sous-ensemble de serveurs (sur la base d'une distribution aléatoire pondérée) pour trouver les messages disponibles et envoie une réponse immédiate, même si aucun message n'est trouvé. -
Interrogation longue :
ReceiveMessage
interroge tous les serveurs à la recherche de messages, envoie une réponse dès qu'au moins un message est disponible, jusqu'au maximum spécifié. Une réponse vide n'est envoyée que si le temps d'attente pour le sondage expire. Cette option permet de réduire le nombre de réponses vides et potentiellement de réduire les coûts.
Les sections suivantes expliquent les détails des interrogations courtes et longues.
Rubriques
Consommation des messages à l'aide de l'interrogation courte
Lorsque vous consommez des messages d'une file d'attente (FIFO ou standard) à l'aide d'un court sondage, Amazon SQS échantillonne un sous-ensemble de ses serveurs (sur la base d'une distribution aléatoire pondérée) et renvoie des messages provenant uniquement de ces serveurs. Autrement dit, une demande ReceiveMessage
particulière peut ne pas renvoyer tous les messages. Toutefois, si votre file d'attente compte moins de 1 000 messages, une requête ultérieure renvoie vos messages. Si vous continuez à consommer les messages de vos files d'attente, Amazon SQS sonde tous ses serveurs et vous recevez tous les messages.
Le schéma diagramme suivant illustre le comportement d'attente active de courte durée des messages renvoyés par une file d'attente standard suite à une demande réception de la part de l'un des composants du système. Amazon SQS sonde plusieurs de ses serveurs (en gris) et renvoie les messages A, C, D et B à partir de ces serveurs. Le message E n'est pas renvoyé pour cette requête, mais l'est pour une requête ultérieure.
Consommation des messages à l'aide de la recherche prolongée
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 sur l'activation d'une recherche prolongée pour une file d'attente nouvelle ou existante à l'aide de la console Amazon SQS, consultez Configuration des paramètres de file d'attente à l'aide de la console Amazon SQS. Pour connaître les bonnes pratiques, consultez Configuration d'un long sondage dans Amazon SQS.
L'attente active de longue durée offre les avantages suivants :
-
Réduisez les réponses vides en permettant à Amazon SQS d'attendre qu'un message soit disponible dans une file d'attente avant d'envoyer une réponse. A moins que la connexion expire, la réponse à la demande
ReceiveMessage
contient au moins l'un des messages disponibles et, au plus, le nombre maximum de messages spécifiés dans l'actionReceiveMessage
. Dans de rares cas, vous pouvez recevoir des réponses vides même si une file d'attente contient encore des messages, en particulier si vous spécifiez une faible valeur pour le paramètreReceiveMessageWaitTimeSeconds
. -
Réduisez les fausses réponses vides en interrogeant tous les serveurs Amazon SQS, plutôt qu'un sous-ensemble de ceux-ci.
-
Renvoyez des messages dès qu'ils sont disponibles.
Pour obtenir des informations sur la façon de vérifier qu'une file d'attente est vide, consultez Confirmation qu'une file d'attente Amazon SQS est vide.
Différences entre les interrogations courtes et longues
L'attente active de courte durée survient lorsque le paramètre WaitTimeSeconds
d'une réponse ReceiveMessage
est défini sur 0
de l'une des deux manières suivantes :
-
L'appel de
ReceiveMessage
définitWaitTimeSeconds
sur0
. -
L'appel
ReceiveMessage
ne définit pasWaitTimeSeconds
, mais l'attribut de file d'attenteReceiveMessageWaitTimeSeconds
est défini sur0
.