AWS SDK Version 3 for .NET
API Reference

AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

Note:

For .NET Core this operation is only available in asynchronous form. Please refer to ChangeMessageVisibilityBatchAsync.

Namespace: Amazon.SQS
Assembly: AWSSDK.SQS.dll
Version: 3.x.y.z

Syntax

C#
public virtual ChangeMessageVisibilityBatchResponse ChangeMessageVisibilityBatch(
         ChangeMessageVisibilityBatchRequest request
)

Parameters

request
Type: Amazon.SQS.Model.ChangeMessageVisibilityBatchRequest

Container for the necessary parameters to execute the ChangeMessageVisibilityBatch service method.

Return Value


The response from the ChangeMessageVisibilityBatch service method, as returned by SQS.

Exceptions

ExceptionCondition
BatchEntryIdsNotDistinctException Two or more batch entries in the request have the same Id.
EmptyBatchRequestException The batch request doesn't contain any entries.
InvalidAddressException The accountId is invalid.
InvalidBatchEntryIdException The Id of a batch entry in a batch request doesn't abide by the specification.
InvalidSecurityException When the request to a queue is not HTTPS and SigV4.
QueueDoesNotExistException The specified queue doesn't exist.
RequestThrottledException The request was denied due to request throttling. The rate of requests per second exceeds the Amazon Web Services KMS request quota for an account and Region. A burst or sustained high rate of requests to change the state of the same KMS key. This condition is often known as a "hot key." Requests for operations on KMS keys in a Amazon Web Services CloudHSM key store might be throttled at a lower-than-expected rate when the Amazon Web Services CloudHSM cluster associated with the Amazon Web Services CloudHSM key store is processing numerous commands, including those unrelated to the Amazon Web Services CloudHSM key store.
TooManyEntriesInBatchRequestException The batch request contains more entries than permissible.
UnsupportedOperationException Error code 400. Unsupported operation.

Examples

This example shows how to change message visibility in batch.

Batch change message visibility example

var client = new AmazonSQSClient();

var url = "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyTestQueue";

// Receive messages.
var msgRequest = new ReceiveMessageRequest
{
  AttributeNames = new List<string>() { "All" },
  QueueUrl = url
};

var msgResponse = client.ReceiveMessage(msgRequest);

// Change visibility timeout for each message.
if (msgResponse.Messages.Count > 0)
{
  var entries = new List<ChangeMessageVisibilityBatchRequestEntry>();

  int numMessages = 0;

  foreach (var message in msgResponse.Messages)
  {
    numMessages += 1;

    var entry = new ChangeMessageVisibilityBatchRequestEntry
    {
      Id = "Entry" + numMessages.ToString(),
      ReceiptHandle = message.ReceiptHandle,
      VisibilityTimeout = (int)TimeSpan.FromMinutes(10).TotalSeconds
    };

    entries.Add(entry);
  }

  var batRequest = new ChangeMessageVisibilityBatchRequest
  {
    Entries = entries,
    QueueUrl = url
  };

  var batResponse = client.ChangeMessageVisibilityBatch(batRequest);

  Console.WriteLine("Successes: " + batResponse.Successful.Count +
    ", Failures: " + batResponse.Failed.Count);

  if (batResponse.Successful.Count > 0)
  {
    foreach (var success in batResponse.Successful)
    {
      Console.WriteLine("  Success ID " + success.Id);
    }
  }

  if (batResponse.Failed.Count > 0)
  {
    foreach (var fail in batResponse.Failed)
    {
      Console.WriteLine("  Failure ID " + fail.Id + ":");
      Console.WriteLine("    Code: " + fail.Code);
      Console.WriteLine("    Message: " + fail.Message);
      Console.WriteLine("    Sender's fault?: " + fail.SenderFault);
    }
  }
}
      

Version Information

.NET Framework:
Supported in: 4.5, 4.0, 3.5

See Also