Wednesday, January 20, 2016

AMQP - the middleware equivalent of HTTP


JMS is an API specification of messaging for Java platform. The problem is that JMS API standardization is limited to only Java platform. And in reality, enterprises today have applications written on many other languages/platforms (e.g. COBOL, .NET, Node.js, Ruby, Python, etc.) including Java. Moreover, over time developers will use new languages as new technologies become available and new applications will be written to solve a particularly new problem. How can then it’s possible to set the infrastructure service providers and the developers free so that the choice of messaging client and the message broker does not become the limiting factor for cross-platform interoperability for application integration? The answer could be the emerging Advanced Message Queuing Protocol (AMQP).

According to AMQP.ORG, 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. It does that by implementing a wire-level protocol that can be thought of as the complement of an API. Instead of defining functions and creating libraries, AMQP defines the conversational byte sequences that pass over a network to make things happen. AMQP delivers the middleware equivalent of HTTP while leaving it up to others to provide implementations. Thus, AMQP is an open Internet protocol for reliably sending and receiving messages that make it possible for everyone to build a diverse, coherent messaging ecosystem.

Currently, some of the AMQP supported commercially available messaging products are: MQ Light and IBM MQ 8 by IBM, RabbitMQ, JBoss A-MQ by Red Hat, Apache Qpid, Azure Service Bus by Microsoft, etc.

This page gives a good overview of how AMQP is differentiated from other middleware standards.

However, AMQP lacks the API standards that JMS provides. And it might be a while before API standards for AMQP on a specific programing platform emerges. Until then the system designers would have to determine – What is more important? Cross platform interoperability of messaging or messaging middleware agnostic implementation of application integration through the use of standard API specification?