Impostare il timeout visibilità inAmazon SQS - AWS SDK for Java 1.x

Abbiamo annunciato l'imminente versione end-of-support di AWS SDK for Java (v1). Ti consigliamo di migrare alla AWS SDK for Java v2. Per date, dettagli aggiuntivi e informazioni su come effettuare la migrazione, consulta l'annuncio collegato.

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à.

Impostare il timeout visibilità inAmazon SQS

Quando viene ricevuto un messaggio inAmazon SQS, rimane in coda fino a quando non viene eliminato per garantire la ricezione. Un messaggio ricevuto, ma non eliminato, sarà disponibile nelle richieste successive dopo un datoTimeout visibilitàper evitare che il messaggio venga ricevuto più di una volta prima che possa essere elaborato ed eliminato.

Nota

Quando utilizzicode standardil timeout visibilità non garantisce che non venga ricevuto un messaggio due volte. Se stai utilizzando una coda standard, assicurati che il codice sia in grado di gestire il caso in cui lo stesso messaggio è stato recapitato più di una volta.

Impostazione del timeout visibilità per un messaggio singolo

Dopo aver ricevuto un messaggio, è possibile modificarne il timeout di visibilità passando il quadratino di ricezione in unChangeMessageVisibilityRequestche passi alla classe AmazonSQS»changeMessageVisibilityMetodo.

Importazioni

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;

Codice

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Get the receipt handle for the first message in the queue. String receipt = sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle(); sqs.changeMessageVisibility(queue_url, receipt, timeout);

Vedi l'esempio completo su GitHub.

Impostazione del timeout di visibilità dei messaggi per più messaggi contemporaneamente

Per impostare il timeout di visibilità dei messaggi per più messaggi contemporaneamente, creare un elenco diChangeMessageVisibilityBatchRequestEntryoggetti, ognuno contenente una stringa ID univoca e un handle di ricevuta. Quindi, passa l'elenco alAmazon SQSclasse client'changeMessageVisibilityBatchMetodo.

Importazioni

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.ChangeMessageVisibilityBatchRequestEntry; import java.util.ArrayList; import java.util.List;

Codice

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); List<ChangeMessageVisibilityBatchRequestEntry> entries = new ArrayList<ChangeMessageVisibilityBatchRequestEntry>(); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg1", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout)); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg2", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout + 200)); sqs.changeMessageVisibilityBatch(queue_url, entries);

Vedi l'esempio completo su GitHub.

Ulteriori informazioni