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.
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.
Requisitos previos
Antes de comenzar, le recomendamos que lea Primeros pasos con el AWS SDK para C++.
Descargue el código de ejemplo y compile la solución tal y como se describe en Introducción a los ejemplos de código.
Para ejecutar los ejemplos, el perfil de usuario que su código utilice para realizar las solicitudes debe tener los permisos adecuados en AWS (para el servicio y la acción). Para obtener más información, consulte Proporcionar credenciales de AWS.
Establecimiento del tiempo de espera de visibilidad del mensaje al recibirlo
Cuando haya recibido un mensaje, puede modificar el tiempo de espera de su visibilidad transfiriendo su identificador de recepción en un objeto ChangeMessageVisibilityRequest a la función de miembro ChangeMessageVisibility de la clase de SQSClient.
Incluye
#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/ChangeMessageVisibilityRequest.h> #include <aws/sqs/model/ReceiveMessageRequest.h> #include <iostream>
Código de
Aws::SQS::Model::ChangeMessageVisibilityRequest request; request.SetQueueUrl(queue_url); request.SetReceiptHandle(messageReceiptHandle); request.SetVisibilityTimeout(visibilityTimeoutSeconds); auto outcome = sqsClient.ChangeMessageVisibility(request); if (outcome.IsSuccess()) { std::cout << "Successfully changed visibility of message " << messageReceiptHandle << " from queue " << queue_url << std::endl; } else { std::cout << "Error changing visibility of message from queue " << queue_url << ": " << outcome.GetError().GetMessage() << std::endl; }
Consulte el ejemplo completo
Más información
-
Tiempo de espera de visibilidad en la Guía para desarrolladores de Amazon Simple Queue Service
-
SetQueueAttributes en la Referencia de la API de Amazon Simple Queue Service
-
GetQueueAttributes en la Referencia de la API de Amazon Simple Queue Service
-
ReceiveMessage en la Referencia de la API de Amazon Simple Queue Service
-
ChangeMessageVisibility en la Referencia de la API de Amazon Simple Queue Service
-
ChangeMessageVisibilityBatch en la Referencia de la API de Amazon Simple Queue Service