Configuración del tiempo de espera de visibilidad en Amazon SQS - AWS SDK para C++

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