Getting Started
Architecture
NServiceBus
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Samples

Azure Storage Queues Transport

Azure Storage Queues is a service hosted on the Azure platform, used for storing large numbers of messages. The messages can be accessed from anywhere in the world via authenticated calls using HTTP or HTTPS.

Azure Storage Queues are designed for very large cloud networks or hybrid networks, providing a highly reliable and inexpensive queuing service. A single message can be up to 64 KB in size and a queue can hold millions of messages, up to the total capacity limit of the storage account (200 TB). Furthermore, it is capable to emulate local transactions using its queue Peek-Lock mechanism.

The main disadvantages of this service is latency introduced by remoteness and the fact that it supports only HTTP-based communication.

Transport at a glance

Feature
TransactionsNone, ReceiveOnly (Message visibility timeout)
Pub/SubNative (Requires Storage Table)
TimeoutsNative (Requires Storage Table)
Large message bodiesData bus
Scale-outCompeting consumer
Scripted DeploymentNot supported
InstallersMandatory
Native integrationSupported

Configuring the endpoint

To use Azure Storage Queues as the underlying transport configure it as follows:

var connectionString = "DefaultEndpointsProtocol=https;AccountName=[ACCOUNT];AccountKey=[KEY];";

var transport = endpointConfiguration.UseTransport<AzureStorageQueueTransport>();
transport.UseQueueServiceClient(new QueueServiceClient(connectionString));

//Blob client does not need to be specified if native delayed delivery is disabled
//transport.DelayedDelivery().DisableDelayedDelivery();

var account = CloudStorageAccount.Parse(connectionString);
transport.UseCloudTableClient(new CloudTableClient(account.TableStorageUri, account.Credentials));
transport.UseBlobServiceClient(new BlobServiceClient(connectionString));

//Or alternatively
transport.ConnectionString("DefaultEndpointsProtocol=https;AccountName=[ACCOUNT];AccountKey=[KEY];");

Then set up appropriate connection strings.

Samples

Related Articles