Azure Service Bus
Azure Service Bus is a managed messaging service for moving work and events between applications asynchronously. It supports queues for one-to-one delivery and topics plus subscriptions for fan-out patterns, while adding retry, dead-lettering, and enterprise messaging controls.
▶Architecture Diagram
📊 Data FlowDashed line animations indicate the flow direction of data or requests
Direct service-to-service calls are simple until one system slows down, fails temporarily, or has to notify many different consumers. At that point, coupling, retries, and backpressure start leaking into every caller and the architecture becomes fragile.
As systems split into many cooperating services, direct HTTP chains created cascading failures and duplicated retry logic. Durable message brokers became important because they allowed systems to communicate without requiring both sides to be healthy at the same instant.
Service Bus inserts a durable messaging layer between producers and consumers. Producers submit work to queues or topics, consumers pull it at their own pace, and failed processing can be retried or redirected into dead-letter storage. That design decouples timing, availability, and scaling characteristics between the two sides.
Service Bus and event streaming services are both asynchronous, but they optimize for different delivery models. Service Bus guarantees ordered, acknowledged delivery of individual messages through queues and topics, with built-in retry, dead-lettering, and duplicate detection for each message. Event streaming services broadcast state-change notifications to many subscribers with at-most-once semantics, optimizing for throughput and fan-out rather than per-message lifecycle control. When the workload requires reliable processing of discrete tasks where every message must be accounted for, Service Bus fits. When the priority is distributing a high volume of state changes quickly to many independent readers, an event stream is the better shape.
Service Bus fits order processing pipelines, background job queues, and multi-consumer event flows where messages must survive temporary outages and be retried intentionally. It is less compelling when simple direct requests are enough or when the workload is really a continuous data stream rather than discrete queued work.