RabbitMQ logo

RabbitMQ

A messaging broker - an intermediary for messaging
5.1K
3.8K
+ 1
466

What is RabbitMQ?

RabbitMQ gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.
RabbitMQ is a tool in the Message Queue category of a tech stack.
RabbitMQ is an open source tool with 6.7K GitHub stars and 2.2K GitHub forks. Here’s a link to RabbitMQ's open source repository on GitHub

Who uses RabbitMQ?

Companies
1286 companies reportedly use RabbitMQ in their tech stacks, including reddit, 9GAG, and Robinhood.

Developers
3717 developers on StackShare have stated that they use RabbitMQ.

RabbitMQ Integrations

Datadog, Buddy, Tutum, StackStorm, and SignalFx are some of the popular tools that integrate with RabbitMQ. Here's a list of all 17 tools that integrate with RabbitMQ.

Why developers like RabbitMQ?

Here’s a list of reasons why companies and developers use RabbitMQ
RabbitMQ Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose RabbitMQ in their tech stack.

James Cunningham
James Cunningham
Operations Engineer at Sentry · | 18 upvotes · 215.3K views
atSentrySentry
Celery
Celery
RabbitMQ
RabbitMQ
#MessageQueue

As Sentry runs throughout the day, there are about 50 different offline tasks that we execute—anything from “process this event, pretty please” to “send all of these cool people some emails.” There are some that we execute once a day and some that execute thousands per second.

Managing this variety requires a reliably high-throughput message-passing technology. We use Celery's RabbitMQ implementation, and we stumbled upon a great feature called Federation that allows us to partition our task queue across any number of RabbitMQ servers and gives us the confidence that, if any single server gets backlogged, others will pitch in and distribute some of the backlogged tasks to their consumers.

#MessageQueue

See more
Tim Abbott
Tim Abbott
Founder at Zulip · | 10 upvotes · 134K views
atZulipZulip
RabbitMQ
RabbitMQ
Python
Python
Redis
Redis

We've been using RabbitMQ as Zulip's queuing system since we needed a queuing system. What I like about it is that it scales really well and has good libraries for a wide range of platforms, including our own Python. So aside from getting it running, we've had to put basically 0 effort into making it scale for our needs.

However, there's several things that could be better about it: * It's error messages are absolutely terrible; if ever one of our users ends up getting an error with RabbitMQ (even for simple things like a misconfigured hostname), they always end up needing to get help from the Zulip team, because the errors logs are just inscrutable. As an open source project, we've handled this issue by really carefully scripting the installation to be a failure-proof configuration (in this case, setting the RabbitMQ hostname to 127.0.0.1, so that no user-controlled configuration can break it). But it was a real pain to get there and the process of determining we needed to do that caused a significant amount of pain to folks installing Zulip. * The pika library for Python takes a lot of time to startup a RabbitMQ connection; this means that Zulip server restarts are more disruptive than would be ideal. * It's annoying that you need to run the rabbitmqctl management commands as root.

But overall, I like that it has clean, clear semanstics and high scalability, and haven't been tempted to do the work to migrate to something like Redis (which has its own downsides).

See more
Samuel Webster
Samuel Webster
Principal Developer at Colart · | 6 upvotes · 98.8K views
WooCommerce
WooCommerce
Symfony
Symfony
RabbitMQ
RabbitMQ
WordPress
WordPress
#Pim

We needed our e-commerce platform (built using WooCommerce) to be able to keep products in sync with our #pim (provided by #akeneo) which is built in Symfony . We hooked into the kernel.event_listener to send RabbitMQ messages to a WordPress API endpoint that triggers the updated product to rebuild with fresh data.

See more
Node.js
Node.js
Python
Python
MySQL
MySQL
Memcached
Memcached
nginx
nginx
RabbitMQ
RabbitMQ
Redis
Redis
Django
Django
Tornado
Tornado
Varnish
Varnish
HAProxy
HAProxy

Around the time of their Series A, Pinterest’s stack included Python and Django, with Tornado and Node.js as web servers. Memcached / Membase and Redis handled caching, with RabbitMQ handling queueing. Nginx, HAproxy and Varnish managed static-delivery and load-balancing, with persistent data storage handled by MySQL.

See more
Sebastian Gębski
Sebastian Gębski
CTO at Shedul/Fresha · | 5 upvotes · 49.7K views
atFresha EngineeringFresha Engineering
PostgreSQL
PostgreSQL
RabbitMQ
RabbitMQ
Redis
Redis

Initially we had just 1 monolithic application with a PostgreSQL database (picked for performance, community & flexibility to work with GIS data), but as we've developed more features, it was clear that some stuff is relatively independent from the rest of the platform - it made sense to split the application into loosely coupled, asynchronously communicated services. As a communication broker we've used RabbitMQ (wrapped in our custom, ProtoBuff-based wrapper). To reduce some excessive inter-process (& inter-dyno) communication, we've applied Redis as a tool to keep short-lived, not-persistent information (but not as a cheap caching workaround for any kind of performance issues ;>).

See more
Kafka
Kafka
RabbitMQ
RabbitMQ

The question for which Message Queue to use mentioned "availability, distributed, scalability, and monitoring". I don't think that this excludes many options already. I does not sound like you would take advantage of Kafka's strengths (replayability, based on an even sourcing architecture). You could pick one of the AMQP options.

I would recommend the RabbitMQ message broker, which not only implements the AMQP standard 0.9.1 (it can support 1.x or other protocols as well) but has also several very useful extensions built in. It ticks the boxes you mentioned and on top you will get a very flexible system, that allows you to build the architecture, pick the options and trade-offs that suite your case best.

For more information about RabbitMQ, please have a look at the linked markdown I assembled. The second half explains many configuration options. It also contains links to managed hosting and to libraries (though it is missing Python's - which should be Puka, I assume).

See more

RabbitMQ's Features

  • Robust messaging for applications
  • Easy to use
  • Runs on all major operating systems
  • Supports a huge number of developer platforms
  • Open source and commercially supported

RabbitMQ Alternatives & Comparisons

What are some alternatives to RabbitMQ?
Kafka
Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.
ActiveMQ
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License.
ZeroMQ
The 0MQ lightweight messaging kernel is a library which extends the standard socket interfaces with features traditionally provided by specialised messaging middleware products. 0MQ sockets provide an abstraction of asynchronous message queues, multiple messaging patterns, message filtering (subscriptions), seamless access to multiple transport protocols and more.
Amazon SNS
Amazon Simple Notification Service makes it simple and cost-effective to push to mobile devices such as iPhone, iPad, Android, Kindle Fire, and internet connected smart devices, as well as pushing to other distributed services. Besides pushing cloud notifications directly to mobile devices, SNS can also deliver notifications by SMS text message or email, to Simple Queue Service (SQS) queues, or to any HTTP endpoint.
Redis
Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
See all alternatives

RabbitMQ's Followers
3795 developers follow RabbitMQ to keep up with related blogs and decisions.
Ahmed Hanie
Josué Pereira
Martin Bezděk
chenatlas
Ghazi BEN DAHMANE
mustafacankah
asdasd asdasf
rexfox147 .
Yatharth Saluja
Aditya Raval