Advanced Message Queuing Protocol is an open standard protocol designed to support messaging over middle-ware. AMQP created a functional interoperability between the client and the messaging middle-ware. The model consists of a set of components that route the messages within the broker service and a network wire live protocol lets client application to communicate with server and interact with the AMQ model. The protocol is used in distributed application and it includes point- to-point, publish, subscribe, fan-out and request-response messaging system. AMQP does not store messages, instead, the messages are routed to queues on behalf of recipient. Top 5 open source AMQP implementation are given below.
- Apache Qpid
- Red Hat Enterprise MRG
RabbitMQ is written in Erlang and it is one of the most widely used robust messaging. RabbitMQ is easy to use and fit for cloud scale. The application is supported by most of the major operating system and platforms, and it is open source under Mozilla Public license. It is designed for business messaging and provides messaging through adapters, SMTP, STOMP, HTTP and lightweight web messaging. It has a thriving community of active users and contributors, and provides full range of commercial implementation support through SprinSoruce division of VMAre. There is no limitation of one time message at RabbitMQ which allows you to send messages twice to consumers and multiple consumers get mutually different messages at one time. Its major drawback is the server’s clustering characteristics is poor .Two queue should be set up on two hosts and it prevents client side duplication. It does not support scalability of number of clients and queues, more than 250,000.Rabbit is very sensitive to DNS / DHCP failures.
Open AMQ is message broker and it has client libraries for C / C++ and JMS. It provides C API called WireAPI which has remote admin tools, instant federation, one line failover, protection against slow clients and many other features. It supports HA through primary / secondary failover, the handling of messages, transactions, and replication of exchange, queues, binding and messages between servers is provided. The server side state is recreated and HA support is exclusive of federation support. The disadvantages of OpenaMQ are – it has few docs and it does not have a strong community support for implementation. It works as subset of AMQP 0.9 and it is mainly JAVA centric, not providing features for other languages.
StormMQ provides message oriented middleware hosted On-Premise or cloud solution. It provide secure open platform and required legal protection for data transferred through the cloud. The solution operates with clients of RabbitMQ and Apache QPid, and also through open source with code under Mozilla Public License. The software is written in Java, and client list of StormMQ includes US based Smith Electric Vehicles and US Department of Energy.
Apache Qpid provides message brokers written in C++, JMS, Java, Python, .Net and Ruby. Apache implements AMQP specification, clustering heterogeneous, multiplatform support, federation and security. All queue data and metadata is replicated throughout the nodes which make up a cluster. QPID is a type of compilation project of Apache which has piles of clients and two brokers which support each other’s versions of AMQP standards and it has few additional boost libraries and support for consuming messaging in C ++ and Python. But it does not allow the support to produce it in either language through HTTP Gateway. The C++ broker provides up to 500,000 queues per host and it provides support for persistent queues for undelivered messages- which survive even after server restart.
Red Hat Enterprise MRG is the latest version of AMQP 0 -10 which provides a number of good features including full management, Active – Active clustering through Apache Qpid, federation, and support for web console. It is also available in latest version of Fedora as AMQP Infrastructure. Its release includes QPID of Apache which helps to improve its messaging system, its throughput and also provides support for traditional SOA Technology. It provides IT infrastructure of the next generation for messaging and offers increase performance, durability, interoperability and fast computing. Red Hat supports messaging of huge files, cycle as well as parallel harvesting scheduling, high performance computing and distributed workload management. It’s MRG – messaging real time grid is set over 50 RPMs.
The main purpose of AMQP is to deliver messages and have simple queue system to get asynchronous message delivered across a number of server side applications and the delivery system should be simple to implement, and have a high durability and scalability. RabbitMQ is one of the favorite AMQP of clients but it needs some more features.