RabbitMQ Tutorials
These tutorials cover the basics of creating messaging applications using RabbitMQ.
You need to have the RabbitMQ server installed to go through the tutorials, please see the installation guide or use the community Docker image.
Executable versions of these tutorials are open source, as is this website.
There are two groups of tutorials:
You can use these tutorials with any versions of RabbitMQ. That said, we recommend to familiarize yourself with the latest version! For the stream tutorials, you need to use RabbitMQ 3.9.0 or later.
Queue tutorials
This section covers the default RabbitMQ protocol, AMQP 0-9-1.
1. "Hello World!"The simplest thing that does something | 2. Work QueuesDistributing tasks among workers (the competing consumers pattern) | 3. Publish/SubscribeSending messages to many consumers at once |
4. RoutingReceiving messages selectively | 5. TopicsReceiving messages based on a pattern (topics) | 6. RPCRequest/reply pattern example |
7. Publisher ConfirmsReliable publishing with publisher confirms |
AMQP 0-9-1 Overview
Once you have been through the tutorials (or if you want to skip ahead), you may wish to read an Introduction to RabbitMQ Concepts and take a look at the Compatibility and Conformance page to find relevant resources to learn more about AMQP 1.0 and AMQP 0-9-1, the two core protocols implemented by RabbitMQ.
Stream tutorials
This section covers RabbitMQ streams.
1. "Hello World!"The simplest thing that does something | 2. Offset TrackingKeep track of message processing |
Stream Overview and Blog Posts
Once you have been through the tutorials (or if you want to skip ahead), you may wish to read the RabbitMQ stream documentation and browse our stream blog posts.
Getting Help
If you have any questions or comments regarding RabbitMQ, feel free to ask them on GitHub Discussion or RabbitMQ community Discord server.
Tutorials in Other Languages
The tutorials here use a number of popular technologies, however, there are ports available for many more languages and client libraries, for example:
- Rust using amqprs
- Rust using Lapin
- Clojure (using Langohr)
- Erlang (using RabbitMQ Erlang client)
- Haskell (using Network.AMQP)
- Perl (using Net::RabbitFoot)
- Perl (using Net::AMQP::RabbitMQ)
- Scala (using RabbitMQ Java client)
We also maintain a list of community-developed clients and developer tools for various protocols RabbitMQ supports.