Azure Queue Storage Reference

This document provides a comprehensive reference for Azure Queue storage, a service that stores large numbers of small messages that can be accessed from anywhere in the world via HTTP or HTTPS.

Note: Azure Queue storage is part of Azure Storage. It's designed for asynchronous task processing and decoupling applications.

Overview

Azure Queue storage is a service that enables you to store large quantities of messages that can be accessed and processed by various components of an application. Each message is approximately 64 KB in size, and a queue can contain any number of messages, up to the limit of the storage account capacity.

Key Concepts

Core Operations

Queue Operations

Message Operations

REST API Reference

The Azure Queue Storage REST API allows you to interact with queues and messages programmatically. Below are some common endpoints:

Queues

Operation HTTP Method URL Description
Create Queue PUT /{accountName}/queues/{queueName} Creates a new queue.
Delete Queue DELETE /{accountName}/queues/{queueName} Deletes an existing queue.
List Queues GET /{accountName}/queues Retrieves a list of queues.
Get Queue Metadata GET /{accountName}/queues/{queueName}?comp=metadata Retrieves queue metadata.

Messages

Operation HTTP Method URL Description
Enqueue Message POST /{accountName}/queues/{queueName}/messages Adds a message to a queue.
Dequeue Message GET /{accountName}/queues/{queueName}/messages?numofmessages=1&visibilitytimeout={seconds} Dequeues a message.
Peek Message GET /{accountName}/queues/{queueName}/messages?peekonly=true Peeks at a message.
Delete Message DELETE /{accountName}/queues/{queueName}/messages/{messageid} Deletes a specific message. Requires popreceipt in the request header.
Clear Messages DELETE /{accountName}/queues/{queueName}/messages Clears all messages from a queue.
Tip: Use the Azure SDKs (e.g., .NET, Python, Java) for a more convenient and type-safe way to interact with Azure Queue Storage, rather than directly using the REST API.

SDK Examples (Conceptual)

Enqueueing a Message (.NET)


using Azure.Storage.Queues;

string connectionString = "YOUR_AZURE_STORAGE_CONNECTION_STRING";
string queueName = "my-tasks-queue";
string messageText = "Process this report.";

// Instantiate a QueueClient
QueueClient queueClient = new QueueClient(connectionString, queueName);

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

// Enqueue the message
SendReceipt sendReceipt = queueClient.SendMessage(messageText);

Console.WriteLine($"Message sent with ID: {sendReceipt.MessageId}");
            

Dequeuing and Processing a Message (Python)


from azure.storage.queue import QueueClient

connection_string = "YOUR_AZURE_STORAGE_CONNECTION_STRING"
queue_name = "my-tasks-queue"

# Instantiate a QueueClient
queue_client = QueueClient.from_connection_string(connection_string, queue_name)

# Receive and delete message
response = queue_client.receive_message()

if response:
    message_id = response.id
    message_content = response.content
    pop_receipt = response.pop_receipt

    print(f"Received message ID: {message_id}")
    print(f"Message content: {message_content}")

    # Process the message here...

    # Delete the message after successful processing
    queue_client.delete_message(message_id, pop_receipt)
    print(f"Message {message_id} deleted.")
else:
    print("No messages in the queue.")
            

Best Practices

Warning: Queue storage is designed for reliable, asynchronous messaging. It is not intended for scenarios requiring strict ordering of messages or transactional guarantees across multiple messages. For those scenarios, consider Azure Service Bus.