Getting Started with Azure Storage Queues

This guide will walk you through the essential steps to start using Azure Storage Queues to build scalable and resilient applications.

What are Azure Storage Queues?

Azure Storage Queues are a service that enables you to store large numbers of messages that can be processed by multiple applications or services. Queues are highly scalable and can handle millions of messages. They are ideal for decoupling applications and services, allowing them to communicate asynchronously.

Key benefits include:

Prerequisites

Before you begin, ensure you have the following:

Step 1: Create a Storage Queue

You can create a queue using the Azure portal, Azure CLI, PowerShell, or programmatically via the Azure Storage SDKs.

Using Azure CLI:


az storage queue create --name myqueue --account-name mystorageaccount --account-key 'YOUR_ACCOUNT_KEY'
            

Replace myqueue with your desired queue name and mystorageaccount with your storage account name. You'll also need your storage account key. For security, consider using managed identities or shared access signatures (SAS) for programmatic access.

Using Azure Portal:

  1. Navigate to your Storage Account in the Azure portal.
  2. Under "Data storage", select "Queues".
  3. Click "+ Queue" to create a new queue.
  4. Enter a name for your queue and click "OK".

Step 2: Add Messages to the Queue

Messages are typically small (up to 64 KB) and represent tasks or data to be processed.

Using Azure SDK for Python (example):

First, install the necessary library:


pip install azure-storage-queue
            

Then, add messages:


from azure.storage.queue import QueueServiceClient, TextMessage

connection_string = "YOUR_CONNECTION_STRING" # Get from storage account access keys
queue_name = "myqueue"

try:
    queue_service_client = QueueServiceClient.from_connection_string(connection_string)
    queue_client = queue_service_client.get_queue_client(queue_name)

    message_text = "Process user registration for ID: 123"
    queue_client.send_message(message_text)
    print(f"Sent message: '{message_text}'")

    message_text_2 = "Generate daily report"
    queue_client.send_message(message_text_2)
    print(f"Sent message: '{message_text_2}'")

except Exception as e:
    print(f"An error occurred: {e}")
            

Replace YOUR_CONNECTION_STRING with your actual connection string found in the "Access keys" section of your storage account in the Azure portal.

Step 3: Process Messages from the Queue

Applications or services can poll the queue for new messages. When a message is retrieved, it becomes invisible to other consumers for a specified period (visibility timeout). Once successfully processed, the message should be deleted from the queue.

Using Azure SDK for Python (example):


from azure.storage.queue import QueueServiceClient

connection_string = "YOUR_CONNECTION_STRING"
queue_name = "myqueue"

try:
    queue_service_client = QueueServiceClient.from_connection_string(connection_string)
    queue_client = queue_service_client.get_queue_client(queue_name)

    # Receive message
    messages = queue_client.receive_messages(visibility_timeout=60) # Make message invisible for 60 seconds

    if messages:
        for msg in messages:
            print(f"Received message: {msg.content}")
            # --- Process the message content here ---
            # Example: parse JSON, call an API, update a database, etc.

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

except Exception as e:
    print(f"An error occurred: {e}")
            

Tip: The visibility_timeout is crucial. If your processing fails, the message will reappear in the queue after this timeout, allowing another consumer to pick it up. Always ensure you delete the message only after successful processing.

Next Steps

Congratulations! You've successfully set up and used Azure Storage Queues.