La AWS SDK para Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-support
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configurar el tiempo de espera de visibilidad en Amazon SQS
Cuando se recibe un mensaje Amazon SQS, permanece en la cola hasta que se elimine para garantizar su recepción. Un mensaje que se ha recibido, pero no se ha eliminado, estará disponible en las solicitudes posteriores después de un determinado tiempo de espera de visibilidad para ayudar a evitar que el mensaje se reciba más de una vez antes de que pueda procesarse y eliminarse.
nota
Cuando se utilizan colas estándar, el tiempo de espera de visibilidad no es una garantía de que un mensaje no se reciba dos veces. Si utiliza una cola estándar, asegúrese de que el código pueda tratar aquellas situaciones en las que el mismo mensaje se entrega más de una vez.
Configuración del tiempo de espera de visibilidad de los mensajes para un solo mensaje
Cuando reciba un mensaje, puede modificar su tiempo de espera de visibilidad pasando su identificador de recepción a un método ChangeMessageVisibilityRequestde la clase AmazonSQS. changeMessageVisibility
Importaciones
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
Código
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);
Consulte el ejemplo completo en.
Configuración del tiempo de espera de visibilidad de los mensajes para varios mensajes a la vez
Para establecer el tiempo de espera de visibilidad de varios mensajes a la vez, cree una lista de ChangeMessageVisibilityBatchRequestEntryobjetos, cada uno con una cadena de identificación única y un identificador de recibo. A continuación, pasa la lista al método de la clase de Amazon SQS cliente. changeMessageVisibilityBatch
Importaciones
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;
Código
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);
Vea el ejemplo completo
Más información
-
Tiempo de espera de visibilidad en la guía Amazon SQS para desarrolladores
-
SetQueueAttributesen la referencia de la Amazon SQS API
-
GetQueueAttributesen la referencia Amazon SQS de la API
-
ReceiveMessageen la referencia Amazon SQS de la API
-
ChangeMessageVisibilityen la referencia Amazon SQS de la API
-
ChangeMessageVisibilityBatchen la referencia Amazon SQS de la API