Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Prepare Azure environments for new workloads—subscriptions, networking, identity, and landing zones
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/services/service-bus/patterns.md
1# Service Bus - Messaging Patterns23## Point-to-Point (Queue)45```6Producer → Queue → Consumer7```89Use for: Work distribution, command processing1011## Pub/Sub (Topic + Subscriptions)1213```14Publisher → Topic → Subscription A → Consumer A15→ Subscription B → Consumer B16```1718Use for: Event broadcasting, multiple consumers1920## SDK Patterns2122### Managed Identity (Recommended)2324#### Node.js2526> **Auth:** `DefaultAzureCredential` is for local development. See [auth-best-practices.md](../../auth-best-practices.md) for production patterns.2728```javascript29const { ServiceBusClient } = require("@azure/service-bus");30const { DefaultAzureCredential } = require("@azure/identity");3132const credential = new DefaultAzureCredential();33const fullyQualifiedNamespace = process.env.SERVICEBUS_NAMESPACE + ".servicebus.windows.net";34const client = new ServiceBusClient(fullyQualifiedNamespace, credential);3536// Send37const sender = client.createSender("orders");38await sender.sendMessages({ body: { orderId: "123" } });3940// Receive41const receiver = client.createReceiver("orders");42const messages = await receiver.receiveMessages(10);43for (const message of messages) {44await receiver.completeMessage(message);45}46```4748#### Python4950> **Auth:** `DefaultAzureCredential` is for local development. See [auth-best-practices.md](../../auth-best-practices.md) for production patterns.5152```python53from azure.servicebus import ServiceBusClient, ServiceBusMessage54from azure.identity import DefaultAzureCredential5556credential = DefaultAzureCredential()57fully_qualified_namespace = f"{os.environ['SERVICEBUS_NAMESPACE']}.servicebus.windows.net"58client = ServiceBusClient(fully_qualified_namespace, credential)5960# Send61sender = client.get_queue_sender("orders")62with sender:63sender.send_messages(ServiceBusMessage('{"orderId": "123"}'))6465# Receive66receiver = client.get_queue_receiver("orders")67with receiver:68messages = receiver.receive_messages(max_message_count=10, max_wait_time=5)69for message in messages:70print(message)71receiver.complete_message(message)72```7374#### .NET7576> **Auth:** `DefaultAzureCredential` is for local development. See [auth-best-practices.md](../../auth-best-practices.md) for production patterns.7778```csharp79using Azure.Identity;80using Azure.Messaging.ServiceBus;8182var credential = new DefaultAzureCredential();83var fullyQualifiedNamespace = $"{Environment.GetEnvironmentVariable("SERVICEBUS_NAMESPACE")}.servicebus.windows.net";84var client = new ServiceBusClient(fullyQualifiedNamespace, credential);8586// Send87var sender = client.CreateSender("orders");88await sender.SendMessageAsync(new ServiceBusMessage("{\"orderId\": \"123\"}"));8990// Receive91var receiver = client.CreateReceiver("orders");92var messages = await receiver.ReceiveMessagesAsync(maxMessages: 10);93foreach (var message in messages)94{95await receiver.CompleteMessageAsync(message);96}97```9899> 💡 **Required Permissions:**100> - `Azure Service Bus Data Sender` (69a216fc-b8fb-44d8-bc22-1f3c2cd27a39) - for sending101> - `Azure Service Bus Data Receiver` (4f6d3b9b-027b-4f4c-9142-0e5a2a2247e0) - for receiving102103### Connection String (Legacy)104105#### Node.js106107```javascript108const { ServiceBusClient } = require("@azure/service-bus");109110const client = new ServiceBusClient(process.env.SERVICEBUS_CONNECTION_STRING);111112// Send113const sender = client.createSender("orders");114await sender.sendMessages({ body: { orderId: "123" } });115116// Receive117const receiver = client.createReceiver("orders");118const messages = await receiver.receiveMessages(10);119for (const message of messages) {120await receiver.completeMessage(message);121}122```123124#### Python125126```python127from azure.servicebus import ServiceBusClient, ServiceBusMessage128129client = ServiceBusClient.from_connection_string(130os.environ["SERVICEBUS_CONNECTION_STRING"]131)132sender = client.get_queue_sender("orders")133134with sender:135sender.send_messages(ServiceBusMessage('{"orderId": "123"}'))136```137138#### .NET139140```csharp141var client = new ServiceBusClient(142Environment.GetEnvironmentVariable("SERVICEBUS_CONNECTION_STRING")143);144var sender = client.CreateSender("orders");145146await sender.SendMessageAsync(new ServiceBusMessage("{\"orderId\": \"123\"}"));147```148149## Dead Letter Handling150151```javascript152const dlqReceiver = client.createReceiver("orders", {153subQueueType: "deadLetter"154});155```156