La AWS SDK for Java 1.x se alcanzó end-of-support el 31 de diciembre de 2025. Le recomendamos que migre a AWS SDK for Java 2.x para seguir recibiendo nuevas características, 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.
Configuración del tiempo de espera de visibilidad en Amazon SQS
Cuando se recibe un mensaje en Amazon SQS, este permanece en la cola hasta que se elimina a fin de 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 haya recibido un mensaje, puede modificar su tiempo de espera de visibilidad pasando su identificador de recepción en el objeto ChangeMessageVisibilityRequest que pasa al método changeMessageVisibility de AmazonSQS class.
Importaciones
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
Código de
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
Configuración del tiempo de espera de visibilidad de los mensajes para varios mensajes a la vez
Para configurar el tiempo de espera de visibilidad para varios mensajes, cree una lista de objetos ChangeMessageVisibilityBatchRequestEntry, cada uno con un ID de cadena y un identificador de recepción únicos. A continuación, pase la lista al método Amazon SQS de la clase del cliente de 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 de
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);
Consulte el ejemplo completo
Más información
-
Tiempo de espera de visibilidad en la Guía para desarrolladores de Amazon SQS
-
SetQueueAttributes en la Referencia de la API de Amazon SQS
-
GetQueueAttributes en la Referencia de la API de Amazon SQS
-
ReceiveMessage en la Referencia de la API de Amazon SQS
-
ChangeMessageVisibility en la Referencia de la API de Amazon SQS
-
ChangeMessageVisibilityBatch en la Referencia de la API de Amazon SQS