Amazon.SQS.AmazonSQSClient.ChangeMessageVisibilityBatch C# (CSharp) Method

ChangeMessageVisibilityBatch() public method

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.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

/// Two or more batch entries in the request have the same Id. /// /// The batch request doesn't contain any entries. /// /// The Id of a batch entry in a batch request doesn't abide by the specification. /// /// The batch request contains more entries than permissible. ///
public ChangeMessageVisibilityBatch ( string queueUrl, List entries ) : ChangeMessageVisibilityBatchResponse
queueUrl string The URL of the Amazon SQS queue whose messages' visibility is changed. Queue URLs are case-sensitive.
entries List A list of receipt handles of the messages for which the visibility timeout must be changed.
return Amazon.SQS.Model.ChangeMessageVisibilityBatchResponse
        public ChangeMessageVisibilityBatchResponse ChangeMessageVisibilityBatch(string queueUrl, List<ChangeMessageVisibilityBatchRequestEntry> entries)
        {
            var request = new ChangeMessageVisibilityBatchRequest();
            request.QueueUrl = queueUrl;
            request.Entries = entries;
            return ChangeMessageVisibilityBatch(request);
        }

Same methods

AmazonSQSClient::ChangeMessageVisibilityBatch ( ChangeMessageVisibilityBatchRequest request ) : ChangeMessageVisibilityBatchResponse

Usage Example

Example #1
0
    public static void SQSChangeMessageVisibilityBatch()
    {
      #region SQSChangeMessageVisibilityBatch
      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);
          }
        }
      }
      #endregion

      Console.ReadLine();
    }
AmazonSQSClient