A message keeps failing processing and is retried until it hits the maximum delivery count. Where does Service Bus put it?
Why B is the answer
The dead-letter queue
Failed messages go to the dead-letter queue, so you can inspect and replay them without blocking everything else.
In detail
- After the maximum delivery count, the message moves to the dead-letter queue.
- Monitor the dead-letter queue, and inspect what lands there.
Use case
An illustrative scenario, not a real incident.
A corrupt message fails again and again. After the maximum delivery count, Service Bus moves it to the dead-letter queue, so others can flow.
See it in different ways
stateDiagram-v2 [*] --> Active Active --> Processing: received Processing --> Completed: success Processing --> Active: failed, retry Active --> DeadLetter: max delivery count reached Completed --> [*]
stateDiagram-v2 [*] --> Queued Queued --> Processing Processing --> Completed: success Processing --> Queued: failure, retry Processing --> DeadLetter: maximum delivery count reached Completed --> [*]
sequenceDiagram participant P0 as Queue participant P1 as Worker participant P2 as Dead-letter queue P0->>P1: Deliver P1-->>P0: Abandon, failed P0->>P2: Maximum deliveries reached
Key point: Failed messages move to the dead-letter queue.
Why the other options are wrong
- A. Back at the head of the queue forever
- That would block the queue forever.
- C. Azure Key Vault
- Key Vault stores secrets.
- D. It is silently deleted
- Service Bus keeps it for inspection.

