Azure Queue storage – how to code?

Azure Queue storage is a cloud-based queues. It temporarily store a list of messages. Each queue can store up to 500TB of data and can process 2,000 messages per second. The pricing is based on size of the queue and number of operation against the queue (e.g. add, delete).

However, Azure Queue is only available for storage account that are in V1 or V2.

Azure Storage Client Library for .NET allows developers to programmatically communicate and manage Azure Queue storage.

We will dissect the code below to get a basic understanding on how to communicate with Azure Queue.

The code below connects to an existing storage account, creates a queue, and send’s a sample message.

var connectionString = "SAS token - sample is too long for this post.";
CloudStorageAccount account = CloudStorageAccount.Parse(connectionString);
CloudQueueClient client = account.CreateCloudQueueClient();
CloudQueue queue = client.GetQueueReference("myqueue");
bool isCreated = await queue.CreateIfNotExistsAsync();
//bool exists = await queue.ExistsAsync();
CloudQueueMessage message = new CloudQueueMessage("your message here");
wait queue.AddMessageAsync(message);

CloudStorageAccount class represents Azure Storage Account. To create an instance, use the Parse method and pass the Shared access signature.

You can use Access keys or Shared access signature. I recommend the latter, to restrict the permission/privilege of the key.

CloudQueueClient class represents Azure Queue storage.

CloudQueue class represents a queue instance. The CreateIfNotExistAsync method return true if the queue does not exist and has been created.

CloudQueueMessage class is represents a message in the queue. The AddMessageAsync method adds a message in the queue.

The code below is an example on how to receive a message from the queue.

var connectionString = "SAS token - sample is too long for this post.";
CloudStorageAccount account = CloudStorageAccount.Parse(connectionString);
CloudQueueClient client = account.CreateCloudQueueClient();
CloudQueue queue = client.GetQueueReference("myqueue");
CloudQueueMessage message = await queue.GetMessageAsync();
if (message != null)
{
    // Your processing logic
    await queue.DeleteMessageAsync(message);
}

The CloudQueue.GetMessageAsync retrieves a single message from the queue.

To remove the message, use CloudQueue.DeleteMessageAsync.

Leave a comment