Devii · Backend · 2026-04-02 · 8 min read
AMQP And Message Queues: Exchanges, Queues, And At-Least-Once Delivery
How AMQP 0-9-1 models routing, and what acknowledgments mean for worker reliability.
**AMQP** (Advanced Message Queuing Protocol) defines a wire-level protocol for message brokers. **RabbitMQ** implements AMQP 0-9-1 and is widely deployed. Producers publish to **exchanges**; bindings route to **queues**; consumers receive messages with acknowledgments.
Delivery guarantees are **at-most-once** without acks, **at-least-once** with manual ack after processing, and **exactly-once** only with idempotent consumers and transactional patterns (expensive). Most web systems implement at-least-once plus idempotent handlers.
Dead-letter exchanges isolate poison messages. TTL and queue limits prevent unbounded memory growth.
Compare with log-based systems (Kafka) when you need replay and retention as a first-class stream. AMQP excels at task distribution and RPC-style workloads.