Azure Service Bus Client Library for Python

7.14.3 · active · verified Sun Mar 29

The `azure-servicebus` library (version 7.14.3) is the Microsoft Azure Service Bus client for Python. It provides high-performance, cloud-managed messaging capabilities for real-time and fault-tolerant communication between distributed senders and receivers. It supports various asynchronous messaging patterns, including structured first-in-first-out messaging, publish/subscribe, and scalable queues and topics. The library is actively maintained with regular releases.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to send and receive a single message using Azure Service Bus queues. It initializes a `ServiceBusClient` from a connection string, then obtains a sender to send a `ServiceBusMessage` and a receiver to receive and complete a `ServiceBusReceivedMessage`. For production, using `azure-identity` with `DefaultAzureCredential` is recommended over connection strings. Ensure the `AZURE_SERVICEBUS_CONNECTION_STRING` and `AZURE_SERVICEBUS_QUEUE_NAME` environment variables are set.

import os
from azure.servicebus import ServiceBusClient, ServiceBusMessage

# Retrieve connection string from environment variable
CONNECTION_STR = os.environ.get('AZURE_SERVICEBUS_CONNECTION_STRING', 'Endpoint=sb://<YOUR_NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY_NAME>;SharedAccessKey=<KEY_VALUE>')
QUEUE_NAME = os.environ.get('AZURE_SERVICEBUS_QUEUE_NAME', 'myqueue')

def send_single_message():
    servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR)
    with servicebus_client: # automatically closes client on exit
        sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME)
        with sender: # automatically closes sender on exit
            message = ServiceBusMessage("Hello, Service Bus!")
            sender.send_messages(message)
            print(f"Sent a single message to queue: {QUEUE_NAME}")

def receive_single_message():
    servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR)
    with servicebus_client:
        receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME, max_wait_time=5) # max_wait_time in seconds
        with receiver:
            received_messages = receiver.receive_messages(max_messages=1)
            for msg in received_messages:
                print(f"Received message: {msg.body}")
                # Complete the message to remove it from the queue
                receiver.complete_message(msg)
                print("Message completed.")
            if not received_messages:
                print(f"No messages received from queue: {QUEUE_NAME}")

if __name__ == '__main__':
    # Ensure AZURE_SERVICEBUS_CONNECTION_STRING and AZURE_SERVICEBUS_QUEUE_NAME are set as environment variables
    # or replace placeholder values in the CONNECTION_STR and QUEUE_NAME variables.
    print("Sending message...")
    send_single_message()
    print("Receiving message...")
    receive_single_message()

view raw JSON →