Azure Storage Queues

Overview

Azure Storage Queues provide reliable messaging for asynchronous communication between application components. This guide walks you through creating a queue, adding messages, and processing them using common languages.

Prerequisites

  • An active Azure subscription.
  • Azure Storage account (you can create one via the Azure portal).
  • Development environment for your preferred language (C#, Python, Node.js).
  • Azure CLI installed (az).

Create a queue

Using Azure CLI:

az storage queue create --name myqueue --account-name mystorageaccount

Or programmatically (C# example):

using Azure.Storage.Queues;

var connectionString = "";
var queueClient = new QueueClient(connectionString, "myqueue");
await queueClient.CreateIfNotExistsAsync();

Add a message

CLI command:

az storage message put --queue-name myqueue --content "Hello, Azure!" --account-name mystorageaccount

C# example:

await queueClient.SendMessageAsync("Hello, Azure!");

Process a message

Retrieve and delete a message (C#):

QueueMessage[] retrieved = await queueClient.ReceiveMessagesAsync(maxMessages:1);
if (retrieved.Length > 0)
{
    string body = retrieved[0].MessageText;
    Console.WriteLine($"Received: {body}");
    await queueClient.DeleteMessageAsync(retrieved[0].MessageId, retrieved[0].PopReceipt);
}

Sample code

C# (.NET)
using System;
using System.Threading.Tasks;
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;

namespace QueueDemo
{
    class Program
    {
        private const string connectionString = "";
        private const string queueName = "myqueue";

        static async Task Main(string[] args)
        {
            var queueClient = new QueueClient(connectionString, queueName);
            await queueClient.CreateIfNotExistsAsync();

            await queueClient.SendMessageAsync("First message");
            QueueMessage[] messages = await queueClient.ReceiveMessagesAsync();

            foreach (QueueMessage msg in messages)
            {
                Console.WriteLine($\"Message: {msg.MessageText}\");
                await queueClient.DeleteMessageAsync(msg.MessageId, msg.PopReceipt);
            }
        }
    }
}
Python
from azure.storage.queue import QueueServiceClient

conn_str = ""
queue_name = "myqueue"

service = QueueServiceClient.from_connection_string(conn_str)
queue = service.get_queue_client(queue_name)
queue.create_queue()

queue.send_message("Hello from Python")
messages = queue.receive_messages(messages_per_page=1)

for msg in messages:
    print(f"Message: {msg.content}")
    queue.delete_message(msg)
Node.js
const { QueueServiceClient } = require("@azure/storage-queue");

const connectionString = "";
const queueName = "myqueue";

async function main() {
  const serviceClient = QueueServiceClient.fromConnectionString(connectionString);
  const queueClient = serviceClient.getQueueClient(queueName);
  await queueClient.createIfNotExists();

  await queueClient.sendMessage("Hello from Node.js");

  const receiveResponse = await queueClient.receiveMessages({ numberOfMessages: 1 });
  for (const message of receiveResponse.receivedMessageItems) {
    console.log(`Message: ${message.messageText}`);
    await queueClient.deleteMessage(message.messageId, message.popReceipt);
  }
}
main().catch(console.error);