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 ( ChangeMessageVisibilityBatchRequest request ) : ChangeMessageVisibilityBatchResponse
request Amazon.SQS.Model.ChangeMessageVisibilityBatchRequest Container for the necessary parameters to execute the ChangeMessageVisibilityBatch service method.
return Amazon.SQS.Model.ChangeMessageVisibilityBatchResponse
Esempio n. 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();
    }