Activation de l'interrogation longue pourAmazon SQSFiles d'attente de messages - AWS SDK for Java 1. x

Nous avons annoncé la sortie prochaine end-of-support de AWS SDK for Java (v1). Nous vous recommandons de migrer vers la AWS SDK for Java version v2. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

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.

Activation de l'interrogation longue pourAmazon SQSFiles d'attente de messages

Amazon SQSles usagesinterrogation courtepar défaut, en interrogeant uniquement un sous-ensemble des serveurs (selon une distribution aléatoire pondérée) pour déterminer si des messages peuvent être inclus dans la réponse.

Les sondages longs permettent de réduire les coûts d'utilisationAmazon SQSen réduisant le nombre de réponses vides lorsqu'il n'y a pas de messages à renvoyer en réponse à un ReceiveMessage demande envoyée à unAmazon SQSfile d'attente et élimination des réponses fausses vides.

Note

Vous pouvez définir une fréquence d'attente active de longue durée à partir de1 à 20 secondes.

Activation de l'attente active de longue durée lors de la création d'une file d'attente

Pour activer l'interrogation longue lors de la création d'unAmazon SQSfile d'attente, définissez laReceiveMessageWaitTimeSecondsAttribut sur l'objetCreateQueueRequestobjet avant d'appeler la classe AmazonSQScreateQueueMéthode.

Importations

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException; import com.amazonaws.services.sqs.model.CreateQueueRequest;

Code

final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Enable long polling when creating a queue CreateQueueRequest create_request = new CreateQueueRequest() .withQueueName(queue_name) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); try { sqs.createQueue(create_request); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }

Veuillez consulter l'exemple complet sur GitHub.

Activation de l'attente active de longue durée pour une file d'attente existante

En plus de l'activation de l'attente active de longue durée lors de la création d'une file d'attente, vous pouvez également l'activer sur une file d'attente existante en définissantReceiveMessageWaitTimeSecondssur leSetQueueAttributesRequestavant d'appeler la classe AmazonSQSsetQueueAttributesMéthode.

Importations

import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;

Code

SetQueueAttributesRequest set_attrs_request = new SetQueueAttributesRequest() .withQueueUrl(queue_url) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); sqs.setQueueAttributes(set_attrs_request);

Veuillez consulter l'exemple complet sur GitHub.

Activation de l'attente active de longue durée pour la réception des messages

Vous pouvez activer l'interrogation longue lors de la réception d'un message en définissant le temps d'attente en secondes sur leReceiveMessageRequestque vous fournissez à la classe AmazonSQSreceiveMessageMéthode.

Note

Vous devez vous assurer que leAWSLe délai d'expiration de la demande du client est supérieur à la durée maximale d'attente active de longue durée (20 secondes) de manière à ce que votrereceiveMessageles demandes n'arrivent pas à attendre le prochain événement de sondage !

Importations

import com.amazonaws.services.sqs.model.ReceiveMessageRequest;

Code

ReceiveMessageRequest receive_request = new ReceiveMessageRequest() .withQueueUrl(queue_url) .withWaitTimeSeconds(20); sqs.receiveMessage(receive_request);

Veuillez consulter l'exemple complet sur GitHub.

Plus d'informations