Azure Storage Queues

Azure Storage Queues provides a robust and scalable solution for reliably storing large numbers of messages that can be accessed from anywhere in the world via HTTP or HTTPS.

Key Features:
  • Scalability: Handles millions of messages.
  • Reliability: Guarantees message delivery.
  • Decoupling: Enables loose coupling between application components.
  • Accessibility: Accessible via standard HTTP/S protocols.

What are Azure Storage Queues?

Azure Storage Queues is a service that allows you to add messages to a queue, and other services or components can then process these messages asynchronously. This is particularly useful for:

Key Concepts

Common Scenarios

Scenario: Image Processing

A web application uploads images. Instead of processing them directly, it adds a message to a queue containing the image location. A separate worker role polls the queue, retrieves messages, downloads the images, processes them (e.g., resizes, applies filters), and stores the results.

Scenario: Asynchronous Order Processing

When a customer places an order on an e-commerce site, the order details are added to a queue. A backend fulfillment service processes these messages asynchronously to manage inventory, generate shipping labels, and update customer records.

Getting Started with Queue Storage

1. Creating a Storage Account

Before you can use Azure Storage Queues, you need an Azure Storage Account. You can create one through the Azure portal, Azure CLI, or Azure PowerShell.

2. Creating a Queue

You can create queues programmatically using the Azure SDKs or via REST APIs.

Example: C# SDK


using Azure.Storage.Queues;

string connectionString = "YOUR_STORAGE_CONNECTION_STRING";
QueueClient queueClient = new QueueClient(connectionString, "my-queue");

// Create the queue if it doesn't exist
queueClient.CreateIfNotExists();

Console.WriteLine($"Queue '{queueClient.Name}' created or already exists.");
                

3. Adding Messages to a Queue

Messages are typically added as strings. For complex data, consider serializing it (e.g., to JSON).

Example: Sending a Message


// Assuming queueClient is already created as above

string messageContent = "Process this order ID: 12345";
queueClient.SendMessage(messageContent);

Console.WriteLine($"Message '{messageContent}' sent to queue.");
                

4. Retrieving and Processing Messages

Messages are retrieved using a DequeueMessages operation. This makes the message invisible for a specified timeout period. If the message is not deleted within that period, it becomes visible again. This ensures that processing failures don't result in lost messages.

Example: Receiving and Deleting a Message


// Assuming queueClient is already created

// Dequeue up to 5 messages
var response = await queueClient.ReceiveMessagesAsync(maxMessages: 5);

foreach (var message in response.Value)
{
    // Process the message content
    Console.WriteLine($"Received message: {message.MessageText}");

    // IMPORTANT: Delete the message after successful processing
    await queueClient.DeleteMessageAsync(message.MessageId, message.PopReceipt);
    Console.WriteLine($"Deleted message with ID: {message.MessageId}");
}
                

Queue Operations and Properties

Operation Description
Create Queue Creates a new queue.
Delete Queue Deletes a queue and all of its messages.
Enqueue Message Adds a message to the queue.
Dequeue Messages Retrieves one or more messages from the queue. The messages become invisible for a specified duration.
Peek Messages Retrieves one or more messages from the queue without making them invisible.
Delete Message Deletes a specific message from the queue after it has been successfully processed.
Clear Queue Deletes all messages from a queue.
Important Note: Messages in Azure Storage Queues are processed at-least-once. Ensure your message processing logic is idempotent to handle potential duplicate deliveries.

Pricing

Azure Storage Queues pricing is based on the amount of data stored and the number of operations performed. For details, refer to the Azure Queue Storage pricing page.

Learn More