More and more companies are adapting to Microservices due to reliability and scalability. Software architectures are rethinking their system designs, monolithic applications are evolving into microservices and infrastructures are moving to cloud. Messaging is undoubtedly an important facet of any microservice architecture. RabbitMQ is a message broker (message queuing software) used to exchange data between processes, applications, systems or servers.
Messaging is not new in Java world, developers have been using it with the help of JMS in Java. However, JMS is not truly interoperable as it is tightly coupled with the JVM and Java world. Big Organisations like JP Morgan, CISCO, Microsoft, RedHat, etc came together to create a truly interoperable messaging standard known as AMQP (Advanced Message Queuing Protocol). AMQP is one of the protocols RabbitMQ supports.
A Message broker is an agent who guarantees the message delivery. The rules a message broker understands is known as messaging protocol.
What is RabbitMQ?
RabbitMQ is an open-source message broker, licensed under the MPL 1.1. It is part of Pivotal software Inc (now owned by VMware). It has several features and benefits as listed below. It is popular in startups as well as big organizations.
RabbitMQ is written in Erlang, designed for a distributed, fault-tolerant, soft real-time systems with almost 99.999% uptime.
Features and benefits of RabbitMQ
- Open Source – Released under Mozilla Public License 1.1.
- Multiple message protocols – AMQP, MQTT, STOMP, HTTP.
- Lightweight – A single instance can run in less than 40MB of RAM.
- Third-party plugins support – Provides flexible plugins system for third party plugins. e.g. plugins for persisting messages into databases.
- Highly Scalable architecture – Easily deploy a cluster of RabbitMQ.
- Enterprise and Cloud-ready – Flexible enough to deploy on-premise infrastructure or in cloud infra.
- Management & Monitoring – HTTP-API, command-line tool, and UI for managing and monitoring.
- Tools support – Works with major CI/CD tools and can deploy with BOSH, Chef, Docker, and Puppet.
Who is using RabbitMQ?
- Google uses RabbitMQ in their several products. Google Cloud Platform also offers RabbitMQ.
- NASA is using RabbitMQ in its Nebula SaaS platform.
- BBC uses it for the real-time news feed.
- Reddit uses in its core application.
- Mozilla uses RabbitMQ in Pulse.
- JPMorgan sends 1 billion AMQP messages per day.
In today’s world, RabbitMQ is used in startups to big size organizations.
What is AMQP – Advanced Message Queuing Protocol?
AMQP is a standard protocol for interoperability between messaging middleware. ISO and IEC approved OASIS AMQP 1.0 (Advanced Message Queuing Protocol) as an International Standard. AMQP has 2 major components, AMQP-client library, and AMQP server. Irrespective of the language in which AMQP-server is written, the AMQP-client library can be written in any programming language.
The Advanced Message Queuing Protocol (AMQP) is an open standard for passing business messages between applications or organizations. It connects systems, feeds business processes with the information they need and reliably transmits onward the instructions that achieve their goals.AMQP official doc
If you have read my articles on JMS, I clearly mentioned the limitations of JMS such as Security, Scalability, etc. But AMQP is designed to eliminate such limitations.
AMQP was designed with the following main characteristics as goals: Security, Reliability, Interoperability, Open standard.
Products supporting AMQP
A standard is of no use without products, and there is an excellent list of AMQP supported message brokers. RabbitMQ was one of the earliest to implement AMQP specification.
- Apache Qpid, an Apache project
- Fedora Linux AMQP Infrastructure
- IIT Software’s SwiftMQ is an enterprise-grade JMS messaging product with full support for AMQP 1.0
- INETCO’s AMQP protocol analyzer
- JORAM: open reliable asynchronous messaging, 100% pure Java implementation of JMS
- Kaazing’s AMQP Web Client
- Microsoft’s Windows Azure Service Bus
- JBoss AMQ by Red Hat built from Qpid
- VMware Inc RabbitMQ
- MQlight by IBM
- Official RabbitMQ code examples in different languages.
- The AMQP v1.0 specification.
- The OASIS AMQP Version 1.0 specification.
- The RabbitMQ official documentation.
The key take ways are, a message broker is like an agent who guarantees message delivery to the destination. AMQP 1.0 is an open standard for messaging protocol, RabbitMQ is one of the most popular open-source messaging middleware that supports AMQP.