advanced
Service Bus
Асинхронные workflow: очереди, topics, subscriptions, dead-lettering, sessions и гарантии доставки.
Azure Service Bus разделяет producers и consumers через queues (point-to-point) и topics с subscriptions (pub/sub). Есть dead-letter queues, sessions для упорядоченной обработки, duplicate detection и отложенная доставка — более сильные гарантии, чем у простых storage queues.
| Паттерн | Примитив Service Bus | |---------|----------------------| | Work queue | Queue с competing consumers | | Fan-out событий | Topic и filtered subscriptions | | Упорядоченная обработка | Sessions с business id | | Poison messages | Dead-letter после max delivery count |
const sender = serviceBusClient.createSender('orders');
await sender.sendMessages({ body: { orderId: '42' }, messageId: '42' });
На интервью: Service Bus vs Event Grid vs Event Hubs; at-least-once delivery и идемпотентные handlers; peek-lock vs receive-and-delete; окно duplicate detection; безопасный replay dead-letter сообщений.
Типовые ошибки: долгая обработка без renewal lock; нет idempotency — retries двойно списывают; subscriptions без filters — все consumers видят все события; нет мониторинга глубины dead-letter.
Компромисс — богатая семантика messaging и enterprise integration против более высокой цены и сложности, чем у лёгких очередей для простых background jobs.
Чеклист:
- Complete или abandon до истечения lock.
- Идемпотентные handlers с business keys.
- Маршрутизация topics через subscription filters.
- Алерты на рост dead-letter queue.
- Runbook replay и poison messages.