I’ve written quite extensively in the past about Azure, and Azure Storage. I recently needed to add a message to an Azure storage queue, and realised that I had never written a post about that, specifically. As with many Azure focused .Net activities, it’s not too complex; but I do like to have my own notes on things.
If you’ve arrived at this post, you may find it’s very similar to the Microsoft documentation.
How to add a message
The first step is to install a couple of NuGet packages:
Install-Package Microsoft.Azure.Storage.Common
Install-Package Microsoft.Azure.Storage.Queue
My preference for these kinds of things is to create a helper: largely so that I can mock it out for testing; however, even if you fundamentally object to the concept of testing, you may find such a class helpful, as it keeps all your code in one place.
public class StorageQueueHelper
{
private readonly string \_connectionString;
private readonly string \_queueName;
public StorageQueueHelper(string connectionString, string queueName)
{
\_connectionString = connectionString;
\_queueName = queueName;
}
public async Task AddNewMessage(string messageBody)
{
var queue = await GetQueue();
CloudQueueMessage message = new CloudQueueMessage(messageBody);
await queue.AddMessageAsync(message);
}
private async Task<CloudQueue> GetQueue()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(\_connectionString);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference(\_queueName);
await queue.CreateIfNotExistsAsync();
return queue;
}
}
The class above works for a single queue, and storage account. Depending on your use case, this might not be appropriate.
The GetQueue() method here is a bit naughty, as it actually changes something (or potentially changes something). Essentially, all it’s doing is connecting to a cloud storage account, and then getting a reference to a queue. We know that the queue will exist, because we’re forcing it to (CreateIfNotExistsAsync()).
Back in AddNewMessage(), once we have the queue, it’s trivial to simply create the message and add it.