rabbitmq-server
Open source RabbitMQ: core server and tier 1 (built-in) plugins
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.
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.
Where it fits
- Connect separate services in a distributed app so they can pass work to each other without calling each other directly.
- Queue background jobs like sending emails or processing images so the main app stays fast for users.
- Buffer incoming traffic during busy periods so downstream services are not overwhelmed.
- Run RabbitMQ as a clustered setup on Kubernetes using the official cluster operator for high availability.