DEV Community

Bertil Muth
Bertil Muth

Posted on

Explain RabbitMQ Like I'm Five

Top comments (3)

Collapse
 
vikrampawar profile image
vikrampawar

Suppose you want speak to your friend Adam and he is not around. What can you do? You can wait until Adam comes to you or you go to Adam. Or you give your message to Rabbit and be assured that the Rabbit will deliver the message safely to Adam. Rabbit can go a bit further, if it knows that Bob is also your friend, and may be interested in the message, it will deliver the message to Bob as well. All this happens even when none of them ever come in contact. You only have to deliver the message once to Rabbit. The friends have to maintain a good relationship with the Rabbit. They should regularly take messages that are meant for them.

Once the communication can happen this way, it can be taken a step further. You can even have communication with Cathy who may not speak the same language as you.

Collapse
 
rhymes profile image
rhymes

RabbitMQ is similar to a piece of the infrastructure of the physical mail system.

It's the part that allows your package marked with an address to reach its destination (routing), being sent back to the main office if the receiver a few days later isn't available and retry the delivery (retry and acknowledgement), or if they don't exist anymore or if they moved (failed delivery), or... if they are actually there (successful delivery).

There are a few differences like the ability to clone a package for multiple receivers (fanout) or the ability for receivers to just subscribe to whatever they actually want (like in old school newsletters).

Collapse
 
nestedsoftware profile image
Nested Software • Edited

I guess the idea is to break up an application into multiple services, or to communicate among independent applications. In any case, the services/applications don't need to connect to one another directly. Instead they all just know about the message bus. The message broker (RabbitMQ in this case) takes care of making sure the messages are getting delivered, e.g. even if a service/application node temporarily goes down.