AWS SDK Version 4 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.

Container for the parameters to the SendMessageBatch operation. You can use SendMessageBatch to send up to 10 messages to the specified queue by assigning either identical or different values to each message (or by not assigning values at all). This is a batch version of SendMessage. For a FIFO queue, multiple messages within a single batch are enqueued in the order they are sent.

The result of sending each message is reported individually in the response. 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.

The maximum allowed individual message size and the maximum total payload size (the sum of the individual lengths of all of the batched messages) are both 256 KiB (262,144 bytes).

A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed. For more information, see the W3C specification for characters.

#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF

Amazon SQS does not throw an exception or completely reject the message if it contains invalid characters. Instead, it replaces those invalid characters with U+FFFD before storing the message in the queue, as long as the message body contains at least one valid character.

If you don't specify the DelaySeconds parameter for an entry, Amazon SQS uses the default value for the queue.

Inheritance Hierarchy

System.Object
  Amazon.Runtime.AmazonWebServiceRequest
    Amazon.SQS.AmazonSQSRequest
      Amazon.SQS.Model.SendMessageBatchRequest

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

Syntax

C#
public class SendMessageBatchRequest : AmazonSQSRequest
         IAmazonWebServiceRequest

The SendMessageBatchRequest type exposes the following members

Constructors

NameDescription
Public Method SendMessageBatchRequest()

Empty constructor used to set properties independently even when a simple constructor is available

Public Method SendMessageBatchRequest(string, List<SendMessageBatchRequestEntry>)

Instantiates SendMessageBatchRequest with the parameterized properties

Properties

NameTypeDescription
Public Property Entries System.Collections.Generic.List<Amazon.SQS.Model.SendMessageBatchRequestEntry>

Gets and sets the property Entries.

A list of SendMessageBatchRequestEntry items.

Starting with version 4 of the SDK this property will default to null. If no data for this property is returned from the service the property will also be null. This was changed to improve performance and allow the SDK and caller to distinguish between a property not set or a property being empty to clear out a value. To retain the previous SDK behavior set the AWSConfigs.InitializeCollections static property to true.

Public Property QueueUrl System.String

Gets and sets the property QueueUrl.

The URL of the Amazon SQS queue to which batched messages are sent.

Queue URLs and names are case-sensitive.

Examples

This example shows how to send messages in batch.

Batch send messages example

    var client = new AmazonSQSClient();

    var entry1 = new SendMessageBatchRequestEntry
    {
        DelaySeconds = 0,
        Id = "Entry1",
        MessageAttributes = new Dictionary<string, MessageAttributeValue>
        {
            {
                "MyNameAttribute", new MessageAttributeValue
                    { DataType = "String", StringValue = "John Doe" }
            },
            {
                "MyAddressAttribute", new MessageAttributeValue
                    { DataType = "String", StringValue = "123 Main St." }
            },
            {
                "MyRegionAttribute", new MessageAttributeValue
                    { DataType = "String", StringValue = "Any Town, United States" }
            }
        },
        MessageBody = "John Doe customer information."
    };

    var entry2 = new SendMessageBatchRequestEntry
    {
        DelaySeconds = 0,
        Id = "Entry2",
        MessageAttributes = new Dictionary<string, MessageAttributeValue>
{
  {
    "MyNameAttribute", new MessageAttributeValue
      { DataType = "String", StringValue = "Jane Doe" }
  },
  {
    "MyAddressAttribute", new MessageAttributeValue
      { DataType = "String", StringValue = "456 Center Road" }
  },
  {
    "MyRegionAttribute", new MessageAttributeValue
      { DataType = "String", StringValue = "Any City, United States" }
  }
},
        MessageBody = "Jane Doe customer information."
    };

    var entry3 = new SendMessageBatchRequestEntry
    {
        DelaySeconds = 0,
        Id = "Entry3",
        MessageAttributes = new Dictionary<string, MessageAttributeValue>
{
  {
    "MyNameAttribute", new MessageAttributeValue
      { DataType = "String", StringValue = "Richard Doe" }
  },
  {
    "MyAddressAttribute", new MessageAttributeValue
      { DataType = "String", StringValue = "789 East Blvd." }
  },
  {
    "MyRegionAttribute", new MessageAttributeValue
      { DataType = "String", StringValue = "Anywhere, United States" }
  }
},
        MessageBody = "Richard Doe customer information."
    };

    var request = new SendMessageBatchRequest
    {
        Entries = new List<SendMessageBatchRequestEntry>() { entry1, entry2, entry3 },
        QueueUrl = "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyTestQueue"
    };

    var response = await client.SendMessageBatchAsync(request);

    if (response.Successful != null)
    {
        Console.WriteLine("Successfully sent:");

        foreach (var success in response.Successful)
        {
            Console.WriteLine("  For ID: '" + success.Id + "':");
            Console.WriteLine("    Message ID = " + success.MessageId);
            Console.WriteLine("    MD5 of message attributes = " +
              success.MD5OfMessageAttributes);
            Console.WriteLine("    MD5 of message body = " +
              success.MD5OfMessageBody);
        }
    }

    if (response.Failed != null)
    {
        Console.WriteLine("Failed to be sent:");

        foreach (var fail in response.Failed)
        {
            Console.WriteLine("  For ID '" + fail.Id + "':");
            Console.WriteLine("    Code = " + fail.Code);
            Console.WriteLine("    Message = " + fail.Message);
            Console.WriteLine("    Sender's fault? = " +
              fail.SenderFault);
        }
    }
            

Version Information

.NET:
Supported in: 8.0 and newer, Core 3.1

.NET Standard:
Supported in: 2.0

.NET Framework:
Supported in: 4.7.2 and newer