Configuration Options

Component: Amazon SQS Transport
NuGet Package NServiceBus.AmazonSQS (4.x)
Target NServiceBus Version: 7.x
The transport does not support transport.ConnectionString(...) to specify the connection string via code.

CredentialSource

Optional

Default: AWS SDK credentials.

By default the endpoint uses the SDK to retrieve AWS credentials. The AWS SDK permits a large number of transparent methods for configuring the credentials as outlined in the .NET SDK guidelines.

Example: To manually control the credentials retrieval, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.ClientFactory(() => new AmazonSQSClient(new InstanceProfileAWSCredentials()));

for S3 specify

var transport = endpointConfiguration.UseTransport<SqsTransport>();
var s3Configuration = transport.S3(bucketName, keyPrefix);
s3Configuration.ClientFactory(() => new AmazonS3Client(new InstanceProfileAWSCredentials()));

Region

Mandatory

Default: AWS SDK.

By default the endpoint uses the SDK to retrieve the default AWS region from the AWS_REGION environment variable.

This is the Amazon Web Services Region in which to access the SQS service. Must be a valid AWS region code.

Example: To manually control the region, specify

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.ClientFactory(() => new AmazonSQSClient(
    new AmazonSQSConfig { 
        RegionEndpoint = RegionEndpoint.APSoutheast2
    }));

for S3 specify

var transport = endpointConfiguration.UseTransport<SqsTransport>();
var s3Configuration = transport.S3(bucketName, keyPrefix);
s3Configuration.ClientFactory(() => new AmazonS3Client(
    new AmazonS3Config
    {
        RegionEndpoint = RegionEndpoint.APSoutheast2
    }));

ProxyHost and ProxyPort

Optional

Default: Empty.

This is the name of the host of the proxy server that the client must authenticate to.

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.ClientFactory(() => new AmazonSQSClient(
    new AmazonSQSConfig { 
        ProxyCredentials = new NetworkCredential(userName, password),
        ProxyHost = "127.0.0.1", 
        ProxyPort = 8888 
    }));

for S3 specify

var transport = endpointConfiguration.UseTransport<SqsTransport>();
var s3Configuration = transport.S3(bucketName, keyPrefix);
s3Configuration.ClientFactory(() => new AmazonS3Client(
    new AmazonS3Config
    {
        ProxyCredentials = new NetworkCredential(userName, password),
        ProxyHost = "127.0.0.1",
        ProxyPort = 8888
    }));
It is discouraged to specify username and password in code.

Client Factory

Optional

Default: () => new AmazonSQSClient().

This overloads the default SQS client factory with a custom factory creation delegate.

Example: To use a custom factory, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.ClientFactory(() => new AmazonSQSClient(new AmazonSQSConfig()));

MaxTTLDays

Optional

Default: 4.

This is the maximum number of days that a message will be retained within SQS and S3. When a sent message is not received and successfully processed within the specified time, the message will be lost. This value applies to both SQS and S3 - messages in SQS will be deleted after this amount of time expires, and large message bodies stored in S3 will automatically be deleted after this amount of time expires.

The maximum value is 14 days.

Example: To set this to the maximum value, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.MaxTimeToLive(TimeSpan.FromDays(10));

QueueNamePrefix

Optional

Default: None.

This string value will be prepended to the name of every SQS queue referenced by the endpoint. This is useful when deploying many instances of the same application in the same AWS region (e.g. a development instance, a QA instance and a production instance), and the queue names need to be distinguished somehow.

Example: For a development instance, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.QueueNamePrefix("DEV-");

Queue names for the endpoint called "SampleEndpoint" might then look like:

DEV-SampleEndpoint
DEV-SampleEndpoint-Retries
DEV-SampleEndpoint-Timeouts
DEV-SampleEndpoint-TimeoutsDispatcher

S3BucketForLargeMessages

Optional

Default: Empty. Any attempt to send a large message with an empty S3 bucket will fail.

This is the name of an S3 Bucket that will be used to store message bodies for messages that are larger than 256kb in size. If this option is not specified, S3 will not be used at all. Any attempt to send a message larger than 256kb will throw if this option hasn't been specified.

If the specified bucket doesn't exist, it will be created at endpoint start up.

Example: To use a bucket named nsb-sqs-messages, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
var s3Configuration = transport.S3(
    bucketForLargeMessages: "nsb-sqs-messages",
    keyPrefix: "my/sample/path");

S3KeyPrefix

Optional

Default: Empty.

This is the path within the specified S3 Bucket to store large message bodies. It is an error to specify this option without specifying a value for S3BucketForLargeMessages.

S3 Client Factory

Optional

Default: () => new AmazonS3Client().

This overloads the default S3 client factory with a custom factory creation delegate.

Example: To use a custom factory, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
var s3Configuration = transport.S3(bucketName, keyPrefix);
s3Configuration.ClientFactory(() => new AmazonS3Client(new AmazonS3Config()));

V1 Compatibility Mode

Optional

Default: Disabled.

This option enables serialization of the TimeToBeReceived and ReplyToAddress message headers in the message envelope for compatibility with endpoints using version 1 of the transport.

Example: To enable version 1 compatibility, specify:

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.EnableV1CompatibilityMode();

Unrestricted Delayed Delivery

Optional

Default: disabled.

SQS supports delaying message delivery by up to 15 minutes natively. To delay messages longer than 15 minutes, the unrestricted delayed delivery mode has to be enabled.

Example

var transport = endpointConfiguration.UseTransport<SqsTransport>();
transport.UnrestrictedDurationDelayedDelivery();

For a detailed overview about the unrestricted delayed delivery feature, refer to the delayed delivery documentation/.


Last modified