In this page, I’ll explain the Overview of Rabbit MQ.
RabbitMQ is open source message broker software (sometimes called message – oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP).
Client libraries to interface with the broker are available for all major programming languages.
The RabbitMQ server is written in the Erlang programming language and is built on the Open Telecom Platform framework for clustering and failover.
“Erlang is a programming language used to build massively scalable soft real-time systems with requirements for high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging
“OTP is set of Erlang libraries and design principles providing middleware to develop these systems.
RabbitMQ is commercially supported by Pivotal and VMware and is known by the name Pivotal RabbitMQ(formerly known as VMware vFabric RabbitMQ).
One can also subscribe to the RabbitMQ service on Pivotal CF (Enterprise PaaS platform offered by Pivotal)
RabbitMQ provides for granular access controls to be set at the level of virtual hosts defined within the broker. Access can be provided at the exchange or queue level.
A cluster of RabbitMQ broker is a logical grouping of one or several Erlang nodes, each running the RabbitMQ application and sharing users, virtual hosts, queues, exchanges, etc.
This works well within the LAN. For distributed RabbitMQ deployment over the WAN, it supports federation or the shovel mechanism.
Highly available queues can be mirrored across multiple nodes in RabbitMQ. Consumers are always connected to the master. When the master is unavailable, the oldest node becomes the master.
RabbitMQ provides for alarms to be configured that would trigger when too much memory is used or there is less disk space or the message flow is fast for queues to keep up. In these cases the broker will automatically block or throttle the client connections.
Firehose/tracing is a feature/exchange provided in RabbitMQ that can be turned on when required so that every single message published or delivered is copied to an alternate queue.
RabbitMQ support Reliable delivery through one of the many features mention above. At this webpage best practice to avoid or compensate for possible failure scenarios covering network failures, hardware or software crashes, and logical errors that can cause channel or connection errors.
Rabbit MQ implements AMQP v0-9-1 and is backward compatible to previous versions v0-9 & v0-8. AMPQ v1.0 is different from its previous versions and supported in Rabbit through an experimental plugin.
RabbitMQ also implements extensions to the AMQP to provide additional functionality.
Extensions to the RabbitMQ broker implementation are possible through Plugins. Plugins for management, federation, shovel, STOMP, MQTT, LDAP are already available for.
Rabbit MQ Client
The community edition of Rabbit MQ provides for a Java & Erlang Client only. The Pivotal RabitMQ provides .Net and JMS client API in addition to the Java & Erlang Clients.
The Devtools page for Rabbit MQ list links to the ever growing list of community support AMQP Clients like Spring, Groovy/Grails, Ruby, C/C++, PHP, Perl, Node.js, Chef/Puppet
In addition to the command line interface, RabbitMQ also has a management console provided through a plugin. Features include:
Declare, list and delete exchanges, queues, bindings, users, virtual hosts and permissions.
Monitor queue length, message rates globally and per channel, data rates per connection, etc.
Send and receive messages.
Monitor Erlang processes, file descriptors, memory use.
Export / import object definitions to JSON.
Force closes connections, purge queues.
Erlang: Download and install Erlang(OTP R16xxx or higher) from
Rabbit MQ: Download and install Rabbit MQ installable for Windows from
On Windows, be careful to install Erlang and Rabbit MQ on a path with ASCII characters and with directory names less than 8 chars.
RabbitMQ web-based management will run on http://localhost:15672/ by default.
Default user name and password is guest & guest and will allow for local system access only.
Rabbit MQ is fast messaging broker. Through exchanges it first decides the route of the message before it persist the same
It supports clients of multiple languages like Java, .NET, Python, PHP, Erlang and many more.
It commercially supported by Pivotal and VMware. Pivotal also support a package ready for deployment to Cloud Foundry.
Built on Erlang there is sufficient support for scalability, high availability of queues, federation.
It can be easily extended using plugins.
That’s it. Thank you for reading this post.
I want you to do something for me right now: Leave a comment !!!
Like this post? Don’t forget to share it!