RabbitMQ, also known as message-oriented middleware is an open source message broker software implementing the Advanced Message Queuing Protocol (AMQP). It is built on the Open Telecom Platform and is written in the Erlang programming language. 

RabbitMQ can be called as a message broker. The principle is simple and that is accepting and forwarding messages. Messages are accepted from producers and delivered to consumers in the same way as in a post office. In between, it can buffer, route and persist the messages in accordance with the rules that you give it. 

Some jargons in RabbitMQ include producing, queue and consuming. Producing simply means sending. Producer is a program that sends messages. A Queue is inside RabbitMQ and is the name for the mailbox. Even though messages flow through your applications and RabbitMQ, you can store them only inside a queue. A Queue is an infinite buffer and is not bound by any limits. A number of producers can send messages that are passed to one queue. Data can be received by many consumers from one queue. Consuming means receiving. So a consumer is a program that mainly waits to receive messages. It is to be noted that producer, queue and broker need not reside on the same machine and in fact in most of the applications, they do not.

RabbitMQ provides a number of features for letting you trade off reliability with performance, including delivery acknowledgements, high availability and publisher confirms. For servers needing to be more unreliably and loosely connected than allowed by clustering, RabbitMQ provides a federation model. Messaging over a variety of messaging protocols is supported by RabbitMQ . There are RabbitMQ clients for any language you can possibly think of. RabbitMQ offers tracing support to let you find out what’s going on ff your messaging system misbehaves.