Configurar el tiempo de espera de visibilidad en Amazon SQS - AWS SDK para Java 1.x

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-supportdiciembre de 2025. Le recomendamos que migre al para AWS SDK for Java 2.xseguir recibiendo nuevas funciones, mejoras de disponibilidad y actualizaciones de seguridad.

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

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 en. GitHub

Más información