explaingit

rabbitmq/rabbitmq-server

13,648JavaScriptAudience · ops devopsComplexity · 4/5LicenseSetup · moderate

TLDR

A widely used message broker that lets different parts of an application send and receive messages reliably, even when those parts run on separate servers.

Mindmap

mindmap
  root((RabbitMQ))
    What it does
      Message brokering
      Background job queues
      Traffic buffering
    Protocols
      AMQP 1.0
      AMQP 0-9-1
      MQTT for IoT
      STOMP
    Queue Types
      Quorum queues
      Streams
    Deployment
      Single server
      Cluster mode
      Kubernetes operator
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Connect separate services in a distributed app so they can pass work to each other without calling each other directly.

USE CASE 2

Queue background jobs like sending emails or processing images so the main app stays fast for users.

USE CASE 3

Buffer incoming traffic during busy periods so downstream services are not overwhelmed.

USE CASE 4

Run RabbitMQ as a clustered setup on Kubernetes using the official cluster operator for high availability.

Tech stack

JavaScriptAMQPMQTTSTOMP

Getting it running

Difficulty · moderate Time to first run · 30min

Easiest to start via Docker, clustering and Kubernetes deployment require additional configuration and infrastructure.

Mozilla Public License 2.0: use and modify freely, but changes to the RabbitMQ source files must be shared under the same license.

In plain English

RabbitMQ is a message broker, which is a piece of software that sits between different parts of an application and helps them communicate by passing messages back and forth. Instead of one part of your system calling another directly, it sends a message to RabbitMQ, which holds it and delivers it to the right recipient when ready. This pattern is commonly used to connect services in a distributed application, handle background jobs, or buffer traffic during busy periods. It supports several messaging protocols, including AMQP 1.0, AMQP 0-9-1, MQTT (commonly used in Internet of Things devices), and STOMP. Some of these can also run over WebSocket connections. The server comes with a set of built-in plugins that cover common use cases, and the project maintains separate repositories for additional plugins. RabbitMQ can run on its own or as part of a cluster of multiple servers for higher availability and throughput. It has support for running on Kubernetes through an official cluster operator. There are two types of queues worth knowing about: quorum queues, which prioritize data safety and consistency across a cluster, and streams, which work like an append-only log where consumers can read data without it being deleted. The open-source version is licensed under Mozilla Public License 2.0. Broadcom (which acquired VMware, the previous steward of the project) offers commercial editions with additional support and Kubernetes-specific features. Community support is available through GitHub Discussions and an official Discord server. Documentation, tutorials, and a blog are maintained at rabbitmq.com. The project was originally created in 2007 and is widely used in production systems.

Copy-paste prompts

Prompt 1
Show me a Python example using the pika library to publish a message to a RabbitMQ queue and consume it in a separate worker process.
Prompt 2
How do I set up a RabbitMQ cluster on Kubernetes using the official RabbitMQ cluster operator? Give me the YAML manifests.
Prompt 3
What is the difference between a quorum queue and a stream in RabbitMQ, and when should I choose each one?
Prompt 4
How do I connect an IoT device to RabbitMQ using MQTT and forward those messages to an AMQP consumer?
Open on GitHub → Explain another repo

← rabbitmq on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.