Setting Visibility Timeout in Amazon SQS
When a message is received in Amazon SQS, it remains on the queue until it’s deleted in order to ensure receipt. A message that was received, but not deleted, will be available in subsequent requests after a given visibility timeout to help prevent the message from being received more than once before it can be processed and deleted.
When using standard queues, visibility timeout isn’t a guarantee against receiving a message twice. If you are using a standard queue, be sure that your code can handle the case where the same message has been delivered more than once.
Prerequisites
Before you begin, we recommend you read Getting started using the AWS SDK for C++.
Download the example code and build the solution as described in Get started on code examples.
To run the examples, the user profile your code uses to make the requests must have proper permissions in AWS (for the service and the action). For more information, see Providing AWS credentials.
Set the Message Visibility Timeout upon Message Receipt
When you have received a message, you can modify its visibility timeout by passing its receipt
handle in a ChangeMessageVisibilityRequestChangeMessageVisibility
member function.
Includes
#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/ChangeMessageVisibilityRequest.h> #include <aws/sqs/model/ReceiveMessageRequest.h> #include <iostream>
Code
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; }
See the complete example
More Info
-
Visibility Timeout in the Amazon Simple Queue Service Developer Guide
-
SetQueueAttributes in the Amazon Simple Queue Service API Reference
-
GetQueueAttributes in the Amazon Simple Queue Service API Reference
-
ReceiveMessage in the Amazon Simple Queue Service API Reference
-
ChangeMessageVisibility in the Amazon Simple Queue Service API Reference
-
ChangeMessageVisibilityBatch in the Amazon Simple Queue Service API Reference