A message broker called RabbitMQ

Messaging allows software applications to connect and scale. Sending data, push notifications, work queues, publish, subscribe, or even work queues, are made possible through messaging. It is an asynchronous process, as it decouples applications by separating sending and receiving data.

What is RabbitMQ?

RabbitMQ is a open source message broker software. This gives us a common platform to send messages to consumers and receive messages from them, and store them in a safe place until they are received. It stores these messages in either the disk or the memory space under memory pressure, and also deletes messages from the message store under memory pressure.

This software can be used for many cases, such as:

  • Distributing tasks among workers
  • Sending messages to many consumers at once
  • Receiving messages selectively or based on a pattern
  • Creating a request-response pattern

Any of the following languages can be used with this software: Python, JavaScript, Java, Ruby, PHP, C#, Go, Elixir, Objective-C, Swift, Spring AMPQ

History

Rabbit Technologies Ltd., a joint venture between LShift and CohesiveFT in 2007, originally developed RabbitMQ. They were acquired in 2010 by SpringSource, a division of VMware. This project then became part of Pivotal Software in 2013. Its source code was released under Mozilla Public License.

How is it used today?

It is often used to process tasks asynchronously, or when you want to decouple your application from another application or service. Some of the todays use cases are as follows:

  • File transcoding: This is important for quick conversions when an uploaded file (video or audio) needs to be transcoded into another format, such that the user won’t have to wait too long. In this case, our messaging software uses a background process or queue to speed up this process.
  • Delivering notifications: Using messaging software for this can easily pass values to a consumer, by decoupling code that deals with sending these notifications via sms or email or other ways.
  • Delayed calculations such as accounting or billing: This can be put in a message queue since it does not need to be seen immediately by the user. This is important for optimization.
  • Application scaling: creating system rules for how many queues, consumers, and/or bindings created to manage the flow of messages can help hugely with scaling an application. It helps to process tasks and manage communication between all different services/applications you are handling.

RabbitMQ is also widely used at AT&T interactive to write plugins.

Why use RabbitMQ?

There are a lot of benefits to use RabbitMQ.

  • It’s reliable. It trades off performance with reliability.
  • It has flexible routing. It routes messages through exchanges before arriving at queues.
  • It allows clustering, forming a single logical broker.
  • It can be used with almost any language you can thing of.
  • It supports messaging over many messaging protocols.
  • It allows for easier debugging by providing tracing support.

Sources: rabbitmq.com, wikipedia.com