Azure Docs

How to Add a Message to an Azure Storage Queue

This document guides you through the process of adding messages to an Azure Storage Queue using various Azure SDKs.

Prerequisites

  • An Azure Storage account. If you don't have one, you can create a free account.
  • A Storage Queue within your storage account.
  • An Azure SDK installed for your preferred programming language (e.g., .NET, Python, Java, Node.js).
  • Appropriate connection string or credentials for your storage account.

Understanding Queue Messages

Messages in Azure Storage Queues are stored as plain text or UTF-8 encoded strings. The maximum message size is 64 KB. For larger data, consider storing the data in Blob Storage and referencing its URL in the queue message.

Adding a Message using the Azure SDKs

1. .NET SDK Example

This example demonstrates adding a message using the Azure.Storage.Queues NuGet package.

// Replace with your actual connection string
string connectionString = "YOUR_AZURE_STORAGE_CONNECTION_STRING";
string queueName = "my-queue";

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

// Ensure the queue exists (create if not)
queueClient.CreateIfNotExists();

// The message content
string messageContent = "This is my first message!";

// Add the message to the queue
try
{
    SendReceipt receipt = queueClient.SendMessage(messageContent);
    Console.WriteLine($"Message sent. Message ID: {receipt.MessageId}");
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Error sending message: {ex.Message}");
}

2. Python SDK Example

This example uses the azure-storage-queue library.

from azure.storage.queue import QueueServiceClient

# Replace with your actual connection string
connection_string = "YOUR_AZURE_STORAGE_CONNECTION_STRING"
queue_name = "my-queue"

# Create a QueueServiceClient
queue_service_client = QueueServiceClient.from_connection_string(connection_string)

# Get a QueueClient
queue_client = queue_service_client.get_queue_client(queue_name)

# Ensure the queue exists (create if not)
queue_client.create_queue()

# The message content
message_content = "Hello from Python!"

# Add the message to the queue
try:
    response = queue_client.send_message(message_content)
    print(f"Message sent. Message ID: {response.message_id}")
except Exception as e:
    print(f"Error sending message: {e}")

3. Node.js SDK Example

This example uses the @azure/storage-queue package.

const { QueueServiceClient } = require("@azure/storage-queue");

// Replace with your actual connection string
const connectionString = "YOUR_AZURE_STORAGE_CONNECTION_STRING";
const queueName = "my-queue";

// Create a QueueServiceClient
const queueServiceClient = QueueServiceClient.fromConnectionString(connectionString);

async function addMessage() {
    // Get a QueueClient
    const queueClient = queueServiceClient.getQueueClient(queueName);

    // Ensure the queue exists (create if not)
    await queueClient.createQueue();

    // The message content
    const messageContent = "Message from Node.js!";

    // Add the message to the queue
    try {
        const response = await queueClient.sendMessage(messageContent);
        console.log(`Message sent. Message ID: ${response.messageId}`);
    } catch (error) {
        console.error(`Error sending message: ${error.message}`);
    }
}

addMessage();

Key Considerations

  • Connection String Security: Never hardcode connection strings directly in production code. Use environment variables, Azure Key Vault, or managed identities.
  • Error Handling: Implement robust error handling for network issues, authentication failures, and other potential problems.
  • Idempotency: When designing your application, consider how to handle duplicate message processing if a message is delivered more than once.
  • Message TTL (Time-to-Live): Messages have an expiration. You can set a TTL when sending a message. If not specified, the default is the maximum queue lifetime.

Next Steps