RabbitMQ Fundamentals
RabbitMQ is a message broker: it accepts messages from publishers, routes them through exchanges and bindings to queues, and delivers them to consumers that acknowledge processing. It decouples producers from consumers so they can scale, fail, and retry independently.
itDistributed systems, messaging, and integration | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — RabbitMQ Fundamentals
RabbitMQ is a message broker that sits between the people who send work and the people who do the work, so neither side has to know the other exists. That is the whole product. Everything else — exchanges, bindings, queues, acks — is how it keeps its promise.
Before brokers like this, a service that needed another service called it directly, which meant they had to be up at the same time, scaled together, and agreed on retry behaviour. RabbitMQ exists so they do not.
Three words carry the model. A publisher sends a message to an exchange, which routes it to a queue using a binding, and a consumer takes it from there. The one thing that surprises people is that you never publish to a queue. You publish to an exchange, and the routing rules decide where the message lands. The default exchange hides this by auto-binding every queue under its own name, which is why RabbitMQ looks like "send straight to a queue" — it is not, and noticing the difference is the day you stop fighting the broker.
Two guarantees run the system and they are deliberately independent. A publisher confirm is the broker telling a publisher "I have this"; a consumer acknowledgement is the consumer telling the broker "I did this." Neither knows the other exists. The pair is what turns "probably sent" into "the broker is responsible for it, and it will not vanish until someone finishes the work."
The thing that will catch you: any consumer can die, so any message can arrive twice. A redelivery is flagged, but only your code can decide that doing the work twice is the same as doing it once. Make consumers idempotent or accept that your side effects will double.
Read the Intro for the full model and the durability matrix that explains why a durable queue alone does not save your messages. The Cheatsheet is the reference you will reach for when you forget which exchange type does what. The Quiz checks that the two-guarantees distinction stuck. And the Timeline explains how a 2007 broker is still here, having added quorum queues, streams, and AMQP 1.0 along the way without breaking the original model.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.rabbitmq.com/docs
Supports
- Current developer and administrator documentation structure
- https://www.rabbitmq.com/tutorials/amqp-concepts
Supports
- Exchanges
- queues
- bindings
- routing keys
- consumers
- channels
- virtual hosts
- https://www.rabbitmq.com/docs/confirms
Supports
- Publisher confirms
- consumer acknowledgements
- delivery tags
- prefetch
- requeue
- redelivery
- automatic and manual ack modes
- https://www.rabbitmq.com/docs/dlx
Supports
- Dead-letter events
- dead-letter exchange configuration
- policy vs x-arguments
- routing of dead-lettered messages
- at-least-once dead-lettering
- https://www.rabbitmq.com/docs/quorum-queues
Supports
- Quorum queue replication
- prefetch cap of 2000
- delivery-limit poison-message handling
- https://www.rabbitmq.com/docs/streams
Supports
- Append-only replay-by-offset log model for high-throughput fanout
- https://www.rabbitmq.com/docs/which-erlang
Supports
- Release series history
- Erlang compatibility
- end-of-life dates for 3.6
- 3.7
- 3.8
- https://www.rabbitmq.com/blog/2020/04/21/quorum-queues-and-why-disks-matter
Supports
- Quorum queue sensitivity to IO latency
- WAL and segment file write path
- SSD recommendation
- https://www.rabbitmq.com/blog/2019/11/11/rabbitmq-3-8-release-overview
Supports
- RabbitMQ 3.8 release and general availability of quorum queues
- https://www.rabbitmq.com/blog/2018/02/05/whats-new-in-rabbitmq-3-7
Supports
- RabbitMQ 3.7 configuration format and peer discovery subsystem
- https://www.rabbitmq.com/blog/2015/12/28/whats-new-in-rabbitmq-3-6-0
Supports
- RabbitMQ 3.6.0 release
- https://www.rabbitmq.com/blog/2018/11/20/quorum-queues-making-rabbitmq-more-competitive
Supports
- Quorum queues announced as the data-safety direction replacing classic mirrored queues
- https://www.rabbitmq.com/blog/2021/07/13/rabbitmq-streams-overview
Supports
- Streams introduced as an append-only replay-by-offset model
- https://www.rabbitmq.com/blog/2022/07/13/rabbitmq-3-11-feature-preview-super-streams
Supports
- Super streams partitioning a logical stream across instances with single-active-consumer
- https://www.rabbitmq.com/blog/2024/08/05/native-amqp-1-0
Supports
- RabbitMQ 4.0 making AMQP 1.0 a first-class native protocol
- https://www.rabbitmq.com/blog/2025/09/01/6-khepri-default
Supports
- Roadmap for making Khepri the default Raft-based metadata store
- https://en.wikipedia.org/wiki/RabbitMQ
Supports
- Founding in 2007 by Rabbit Technologies
- SpringSource acquisition 2010
- Pivotal 2013
- VMware 2019
- Erlang and OTP foundation
- plugin architecture
- https://activemq.apache.org/
Supports
- Apache ActiveMQ Classic as a multi-protocol Java broker comparable to RabbitMQ
- https://activemq.apache.org/components/artemis/
Supports
- ActiveMQ Artemis as the asynchronous non-blocking successor to ActiveMQ Classic
- https://kafka.apache.org/
Supports
- Apache Kafka as an append-only partitioned replay-by-offset log
- https://pulsar.apache.org/
Supports
- Apache Pulsar as a layered streaming platform separating brokers from bookies
- https://rocketmq.apache.org/
Supports
- Apache RocketMQ as a distributed messaging and streaming platform
- https://nats.io/
Supports
- NATS as a lightweight publish/subscribe system with JetStream persistence
- https://aws.amazon.com/amazon-mq/
Supports
- Amazon MQ as a managed broker service running RabbitMQ and ActiveMQ
- https://azure.microsoft.com/en-us/products/service-bus/
Supports
- Azure Service Bus as a managed enterprise messaging service
- https://cloud.google.com/pubsub/
Supports
- Google Cloud Pub/Sub as a managed at-least-once publish/subscribe service
- https://www.cloudamqp.com/
Supports
- CloudAMQP as a managed RabbitMQ-as-a-service across clouds
- https://tanzu.vmware.com/rabbitmq
Supports
- VMware Tanzu commercial RabbitMQ distribution with enterprise support and operator
