La AWS SDK pour Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
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 des longues interrogations pour les files d'attente de Amazon SQS messages
Amazon SQS utilise un court sondage par défaut, interrogeant uniquement un sous-ensemble des serveurs, sur la base d'une distribution aléatoire pondérée, afin de déterminer si des messages peuvent être inclus dans la réponse.
Les longs sondages permettent de réduire les coûts d'utilisation en Amazon SQS réduisant le nombre de réponses vides lorsqu'aucun message n'est disponible pour répondre à une ReceiveMessage demande envoyée dans une Amazon SQS file d'attente et en éliminant les fausses réponses vides.
Note
Vous pouvez définir une fréquence d'interrogation longue comprise entre 1 et 20 secondes.
Activation de l'attente active de longue durée lors de la création d'une file d'attente
Pour permettre un long sondage lors de la création Amazon SQS d'une file d'attente, définissez l'ReceiveMessageWaitTimeSeconds
attribut sur l'CreateQueueRequestobjet avant d'appeler la méthode de la classe createQueue
AmazonSQS.
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; } }
Voir l'exemple complet
Activation de l'attente active de longue durée pour une file d'attente existante
En plus de permettre un long sondage lors de la création d'une file d'attente, vous pouvez également l'activer sur une file d'attente existante en activant la ReceiveMessageWaitTimeSeconds
méthode « SetQueueAttributesRequestavant d'appeler la classe setQueueAttributes
AmazonSQS ».
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);
Voir l'exemple complet
Activation de l'attente active de longue durée pour la réception des messages
Vous pouvez activer les longs sondages lorsque vous recevez un message en définissant le temps d'attente en secondes sur la méthode ReceiveMessageRequestque vous indiquez à la classe receiveMessage
AmazonSQS.
Note
Vous devez vous assurer que le délai d'expiration des demandes du AWS client est supérieur à la durée maximale du sondage (20 secondes) afin que vos receiveMessage
demandes ne soient pas expirées en attendant le prochain événement du sondage !
Importations
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
Code
ReceiveMessageRequest receive_request = new ReceiveMessageRequest() .withQueueUrl(queue_url) .withWaitTimeSeconds(20); sqs.receiveMessage(receive_request);
Voir l'exemple complet
Plus d'informations
-
Amazon SQS Longue interrogation dans le guide du Amazon SQS développeur
-
CreateQueuedans la référence de Amazon SQS l'API
-
ReceiveMessagedans la référence de Amazon SQS l'API
-
SetQueueAttributesdans la référence de Amazon SQS l'API