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);