Abilitazione del long polling perAmazon SQSCoda di messaggi - AWS SDK for Java 1. x

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Abilitazione del long polling perAmazon SQSCoda di messaggi

Amazon SQSutilizzashort pollingper impostazione predefinita, eseguendo query solo a un sottoinsieme di server, in base a una distribuzione random ponderata, per determinare se i messaggi sono disponibili per essere inclusi nella risposta.

Il polling lungo aiuta a ridurre i costi di utilizzoAmazon SQSriducendo il numero di risposte vuote quando non ci sono messaggi disponibili da restituire in risposta a ReceiveMessage richiesta inviata a unAmazon SQScoda ed eliminazione di false risposte vuote.

Nota

È possibile impostare una frequenza di polling lunga da1-20 secondi.

Abilitazione del long polling alla creazione di una coda

Per abilitare il polling lungo durante la creazione di unAmazon SQScoda, imposta ilReceiveMessageWaitTimeSecondsattributo sulCreateQueueRequestoggetto prima di chiamare la classe AmazonSQS»createQueuemetodo.

Importazioni

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;

Codice

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; } }

Vedi l'esempio completo su GitHub.

Abilitazione del long polling su una coda esistente

Oltre ad abilitare il polling lungo durante la creazione di una coda, è anche possibile attivarla su una coda esistente impostandoReceiveMessageWaitTimeSecondssulSetQueueAttributesRequestprima di chiamare la classe AmazonSQS»setQueueAttributesmetodo.

Importazioni

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

Codice

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

Vedi l'esempio completo su GitHub.

Abilitazione del long polling alla ricezione del messaggio

È possibile abilitare il polling lungo quando si riceve un messaggio impostando il tempo di attesa in secondi sulReceiveMessageRequestche fornisci alla classe AmazonSQS»receiveMessagemetodo.

Nota

Dovresti assicurarti che ilAWSil timeout della richiesta del cliente è superiore al tempo massimo lungo di sondaggio (20s) in modo che il tuoreceiveMessagele richieste non scadono durante l'attesa del prossimo evento del sondaggio!

Importazioni

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

Codice

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

Vedi l'esempio completo su GitHub.

Ulteriori informazioni