Abbiamo annunciato
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»changeMessageVisibility
Metodo.
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
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'changeMessageVisibilityBatch
Metodo.
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
Ulteriori informazioni
-
Timeout visibilitànellaAmazon SQSGuida per gli sviluppatori
-
SetQueueAttributesnellaAmazon SQSDocumentazione di riferimento API
-
GetQueueAttributesnellaAmazon SQSDocumentazione di riferimento API
-
ReceiveMessagenellaAmazon SQSDocumentazione di riferimento API
-
ChangeMessageVisibilitynellaAmazon SQSDocumentazione di riferimento API
-
ChangeMessageVisibilityBatchnellaAmazon SQSDocumentazione di riferimento API