Learn RabbitMQ (AMQP-based message broker and queue system) from the basics to production-grade: environment setup, history & architecture, installation, producers & consumers, work queues, exchanges & routing patterns, advanced routing with topics, RPC patterns, message properties, queue features & dead letter exchanges, TTL & queue expiration, virtual hosts, flow control, user management & authentication, authorization, TLS/SSL, clustering & high availability with quorum queues, streams, performance tuning, monitoring & alerting, federation & shovel, multi-protocol MQTT/STOMP/WebSockets, Docker & Kubernetes deployment, CI/CD & GitOps, backup & disaster recovery, up to production deployment & best practices, with 33 episodes in total.
Before touching RabbitMQ, you need to master the concepts of client-server, basic networking, asynchronous programming, and data serialization. In this episode you also set up a local environment, install RabbitMQ along with Erlang/OTP, and verify your first installation.

The message broker was born out of the need to decouple interdependent services. In this episode you learn the evolution of messaging from direct communication to message queuing, the history of the AMQP protocol and RabbitMQ, and how it compares to Kafka, Redis Pub/Sub, and SQS.

In this episode you learn the entire core vocabulary of RabbitMQ: producer, consumer, queue, exchange, binding, virtual host, connection, and channel. Next, you dissect the Erlang VM architecture and the journey of a message from publish to being consumed.

Time to run real RabbitMQ. In this episode you install RabbitMQ via the package manager and Docker, enable the Management Plugin, create your first admin user, and explore the Management UI and the rabbitmqctl command-line tool to make sure the node is healthy.

Time to write your first code with RabbitMQ. In this episode you create a simple producer and consumer using Python pika, Node.js amqplib, and Go amqp091-go, then learn the best practices for managing connections, channels, heartbeats, and graceful shutdown.

A work queue is a pattern for distributing heavy tasks to many workers. In this episode you learn round-robin dispatching, manual acknowledgment with Basic.Ack and Basic.Nack, message durability, and fair dispatch using a prefetch count so workers aren't overwhelmed.

An exchange is the router that decides where messages go. In this episode you learn the five exchange types: direct, fanout, topic, headers, and default, along with routing keys, binding keys, exchange-to-exchange binding, alternate exchanges, and implementing the publish/subscribe pattern.

Topic exchanges open up pattern-based routing with wildcards. In this episode you master the star and hash rules, design topic hierarchies for routing logs based on severity and module, and get to know headers exchanges with the x-match all and any rules.

Not all communication can be fully asynchronous. In this episode you build the request-reply pattern on RabbitMQ with correlation ids and reply-to queues, get to know the Direct Reply-To feature, and understand when you should not use the RPC pattern in RabbitMQ.

A RabbitMQ message carries more than just a body. In this episode you learn all the standard AMQP properties such as delivery_mode, priority, expiration, and correlation_id, add custom headers for metadata, and strategies for handling large messages with chunking and compression.
