Advanced Message Queuing Protocol (AMQP)

What is Advanced Message Queuing Protocol (AMQP)?[1]

Advanced Message Queuing Protocol (AMQP) is an open standard protocol designed to support messaging over the middleware. AMQP created functional interoperability between the client and the messaging middleware. The model consists of a set of components that route the messages within the broker service and a network wire live protocol lets the client application communicate with the server and interact with the AMQ model. The protocol is used in the distributed application and it includes point-to-point, publish, subscribe, fan-out, and request-response messaging systems. AMQP does not store messages, instead, the messages are routed to queues on behalf of recipient.

The Advanced Message Queuing Protocol was designed to provide features like open source, standardization, reliability, interoperability, and security. It helps in connecting the organization, time, space, and technologies. The protocol is binary, with features like negotiation, multichannel, portability, efficiency, and asynchronous messaging. It is commonly split into two layers, namely, a functional layer and a transport layer. The functional layer helps in defining the commands for functioning on the part of the application, whereas the transport layer helps in carrying the different techniques such as framing, channel multiplexing, data representation, etc., between the server and the application. The Advanced Message Queuing protocol provides some key features that are beneficial for organizations as well as for applications. Rapid and guaranteed message deliveries, as well as reliability and message acknowledgments, are the main features of the protocol. These abilities help in the distribution of messages in a multi-client environment, in the delegation of time-consuming tasks, and in making a server tackle immediate requests faster. The protocol also has the capability to globally share and monitor updates and also to enable communication between different systems that are connected. Another advantage of the protocol is full asynchronous functionality for systems as well as improved reliability and better uptime with regard to application deployments.[2]

History of Advanced Message Queuing Protocol (AMQP)[3]

The idea for AMQP was put forward in 2003 by John O'Hara of JPMorgan Chase in London. AMQP was conceived as a cooperative open effort. JPMorgan Chase contracted iMatix Corporation from mid-2004 to mid-2006 to develop a C broker and protocol documentation. In 2005 JPMorgan Chase approached other firms to form a working group that included Cisco Systems, IONA Technologies, iMatix, Red Hat, and Transaction Workflow Innovation Standards Team (TWIST). In the same year, JPMorgan Chase partnered with Red Hat to create Apache Qpid, initially in Java and soon after in C++. Independently, RabbitMQ was developed in Erlang by Rabbit Technologies, followed later by the Microsoft and StormMQ implementations. The working group grew to 23 companies including Bank of America, Barclays, Cisco Systems, Credit Suisse, Deutsche Börse, Goldman Sachs, HCL Technologies Ltd, Progress Software, IIT Software, INETCO Systems Limited, Informatica (including 29 West), JPMorgan Chase, Microsoft Corporation, my-Channels, Novell, Red Hat, Software AG, Solace Systems, StormMQ, Tervela Inc., TWIST Process Innovations ltd, VMware (which acquired Rabbit Technologies) and WSO2. In August 2011, the AMQP working group announced its reorganization into an OASIS member section. AMQP 1.0 was released by the AMQP working group on 30 October 2011, at a conference in New York. At the event, Microsoft, Red Hat, VMware, Apache, INETCO, and IIT Software demonstrated software running the protocol in an interoperability demonstration. The next day, on 1 November 2011, the formation of an OASIS Technical Committee was announced to advance this contributed AMQP version 1.0 through the international open standards process. The first draft from OASIS was released in February 2012, the changes as compared to that published by the Working Group being restricted to edits for improved clarity (no functional changes). The second draft was released for public review on 20 June (again with no functional changes),[12] and AMQP was approved as an OASIS standard on 31 October 2012. OASIS AMQP was approved for release as an ISO and IEC International Standard in April 2014. AMQP 1.0 was balloted through the Joint Technical Committee on Information Technology (JTC1) of the International Standards Organization (ISO) and the International Electrotechnical Commission (IEC). The approved OASIS AMQP submission has been given the designation, ISO/IEC 19464. Previous versions of AMQP were 0-8, published in June 2006, 0-9, published in December 2006, 0-10 published in February 2008, and 0-9-1, published in November 2008. These earlier releases are significantly different from the 1.0 specification. Whilst AMQP originated in the financial services industry, it has general applicability to a broad range of middleware problems.

Advanced Message Queuing Protocol (AMQP) v1.0 Specification[4]

ISO/IEC 19464:2014 defines the Advanced Message Queuing Protocol (AMQP), as an open internet protocol for business messaging. It defines a binary wire-level protocol that allows for the reliable exchange of business messages between two parties. AMQP has a layered architecture and the specification is organized as a set of parts that reflects that architecture. Part 1 defines the AMQP type system and encoding. Part 2 defines the AMQP transport layer, an efficient, binary, peer-to-peer protocol for transporting messages between two processes over a network. Part 3 defines the AMQP message format, with a concrete encoding. Part 4 defines how interactions can be grouped within atomic transactions. Part 5 defines the AMQP security layers.

AMQP Key Features and Capabilities[5]

  • AMQP was designed with the following main characteristics as goals: (features)
    • Security
    • Reliability
    • Interoperability
    • Standard
    • Open
  • AMQP connects across: (capabilities)
    • Organizations – applications in different organizations
    • Technologies – applications on different platforms
    • Time – systems don’t need to be available simultaneously
    • Space – reliably operates at a distance, or over poor networks

Advantages of AMQP over JMS[6]

AMQP is often compared to JMS (Java Message Service), the most common messaging system in the Java community. A limitation of JMS is that the APIs are specified, but the message format is not. Unlike AMQP, JMS has no requirement for how messages are formed and transmitted. Essentially, every JMS broker can implement the messages in a different format. They just have to use the same API. Thus Pivotal has released a JMS on Rabbit project, a library that implements the JMS APIs but uses RabbitMQ, an AMQP broker, to transmit the messages. AMQP publishes its specifications in a downloadable XML format. This availability makes it easy for library maintainers to generate APIs driven by the specs while also automating the construction of algorithms to marshal and demarshal messages. These advantages and the openness of the spec have inspired the creation of multiple brokers that support AMQP, including:

  • RabbitMQ
  • ActiveMQ
  • Qpid

See Also


Further Reading