Copyright (c) 2026 MindMesh Academy. All rights reserved. This content is proprietary and may not be reproduced or distributed without permission.

4.1.4.1. Implement Queue Storage

4.1.4.1. Implement Queue Storage

First Principle: Implementing Azure Queue storage enables reliable, asynchronous message communication between application components. This is achieved by programmatically creating queues and managing messages using SDKs.

What It Is: Implementing Queue storage means using Azure Queue storage within your applications to send and receive messages.

1. Create a Queue in Azure Storage:
  • Via Azure CLI:
    az storage queue create --name myqueue --account-name mystorageaccount
    
2. Add Messages to a Queue:
  • Using Python SDK:
    from azure.storage.queue import QueueClient
    # Replace with your actual connection string from Azure Portal
    queue = QueueClient.from_connection_string(conn_str, "myqueue")
    queue.send_message("Hello, World!") # Message content as string or bytes
    
3. Peek at Messages (without removing):
  • This allows a receiver to view messages without making them invisible or removing them from the queue.
    peeked = queue.peek_messages(max_messages=1) # Peek up to 1 message
    if peeked:
        print(f"Peeked message: {peeked[0].content}")
    
4. Dequeue (Retrieve & Delete) Messages:
  • This is the standard pattern for processing messages. A message is retrieved and, if successfully processed, then deleted.
    msg = queue.receive_message() # Retrieve a single message
    if msg:
        # process msg.content (e.g., image resizing task)
        print(f"Processing message: {msg.content}")
        queue.delete_message(msg) # Delete the message from the queue after successful processing
    
5. Message Visibility Timeout:
  • When a message is dequeued, it becomes invisible for a set period (default: 30s). If not deleted within this window, it reappears in the queue for reprocessing, ensuring reliability.
6. Update Visibility Timeout:
  • Use this to extend processing time if needed, especially for long-running tasks.
    # Update the visibility timeout of a message, e.g., extend by 60 seconds
    queue.update_message(msg, visibility_timeout=60)
    

Scenario: Your web application sends tasks to an Azure Queue. A backend worker processes these tasks. You need to ensure the worker can retrieve a message, process it for a few minutes, and then delete it. If the worker crashes, the message should become visible again for another worker to process.

Reflection Question: How do programmatic operations (send_message, receive_message, delete_message) combined with the message visibility timeout fundamentally enable reliable, asynchronous message communication between application components for load leveling and task processing?

Alvin Varughese
Written byAlvin Varughese
Founder•15 professional certifications