We can compare RabbitMQ to postal company, which is an organization made not only from post offices, but the whole infrastructure used to transfer messages from one place to another, from the sender to the recipient.
In RabbitMQ the sender is called producer, the recipient is called consumer, and mentioned postal company we can refer to message queue.
As a message we can use any string of characters, so it can be data in JSON format, files encoded in base64 form, simple text messages, or single lines of text, e.g. server or an application logs.
RabbitMQ server collects messages and – depending on the type of queue, as well as its configuration – it can: wait for their recipient(s) to appear, send tagged messages to the right consumers only, or even reject them if no one comes for them.
RabbitMQ is an open source message broker, written in Erlang language, which was designed for concurrent applications running in a distributed environment, where such features as scalability, fault tolerance and long-lasting work with a large number of threads are particularly important. Erlang was created at Ericsson in the 1980s by Joe Armstrong and is used to a large extent in telecommunication applications.
RabbitMQ implements the Advanced Message Queuing Protocol (abbreviated as AMQP) which is an open standard describing the application layer protocol for Message-Oriented Middleware (MOM). Our message courier supports both AMQP versions 0-8-x, 0-9-x (0-9-1) and AMQP 1.0, which is significantly different from the 0-9-1 version, from which it is much more extended.
RabbitMQ natively works with the AMQP 0-8-x / 0-9-x protocol, while the other protocols are supported in the form of plugins.
This messaging broker also supports protocols: