AMQP or Advanced Message Queuing Protocol is an open standard protocol in the application layer of a communication system related to Internet of Things (IoT). Previously, we have discussed about Protocols Related to Internet of Things (IoT). In that article, we provided a list of different Protocols. Among the listed protocols, AMQP or Advanced Message Queuing Protocol is also listed. The defining characteristics of the AMQP protocol are message orientation, queuing, routing (both point-to-point and publish-subscribe), accuracy and security.
Basics on Advanced Message Queuing Protocol (AMQP)
AMQP provides the behaviors like server providing the messaging implementations on different vendors which are truly interoperable and running the messaging client, in the same way protocols like SMTP, HTTP, FTP and the like that have interoperable systems. Other previous attempts to standardize middleware occurred at the level of API (like JMS ) and did not achieve the true interoperability. Unlike JMS, which only defines an API, AMQP is a wire-level protocol or wire protocol. A wire-level protocol is a description of the format of the data that are sent through the network as a stream of octets. Therefore, any program that can create and interpret messages according to this data format can interoperate with any other tool that complies with this protocol, regardless of the implementation language.
AMQP was defined from mid-2004 to mid-2006 by the American bank JP Morgan Chase and iMatix Corporation, they also developed the implementations in C / C ++ and Java. JP Morgan Chase and iMatix documented the protocol as an interoperable protocol specification and delivered to a working group that included Red Hat, Cisco Systems, TWIST, IONA and iMatix. As of November 2009, this working group consists of the following companies : Bank of America, Barclays, Cisco Systems, Credit Suisse, Deutsche Börse Systems, Envoy Technologies Inc., Goldman Sachs, Progress Software, iMatix Corporation, JPMorgan Chase Bank NA Inc., Microsoft Corporation, Novell , Rabbit Technologies Ltd., Red Hat, Inc., Solace Systems, Tervela Inc., TWIST Process Innovations ltd, WS02 and 29West Inc.
---
A major design goal of AMQP was to create a protocol stack with open standard for enterprise messaging, both within the same organization and between the organizations, by combining AMQP with one of the many open standards describing transactions business as FpML or more generally safe transport protocols of SOAP. Although AMQP has the origin from the financial industry, it is applicable to a wide range of middleware.
The following specifications of the AMQP protocol have been published, in chronological order:
- 0-8 June 2006
- 0-9 December 2006
- 0-10 (documents have no date)
- 0-9-1 in November 2008
- 1.0 draft in May 2010
- 1.0 end in October 2011
The version 1.0 outlines specification changes in the AMQP model and shared concepts eliminating exchangers and linkages, replacing them with links. This change aims to remedy two problems with the previous approach : the publisher previously needed to know too much about the topology of the receptor (which exchangers and exchanger types are available). The producer flow control is complex : if an exchanger routes a message to two different queues, one empty and the other will be nearly full, there should be a control of information flow which must need to be sent to the producer. Other changes include the introduction of a system of direct questioning queue similar to email or XMPP.
The Model of Advanced Message Queuing Protocol (AMQP)
AMPQ has their own website :
1 | http://www.amqp.org/ |
These are AMQP implementations that are publicly available. OpenAMQP, the original open-source implementation of AMQP, is written in C by iMatix. It runs on Linux, AIX, Solaris, Windows and OpenVMS. Includes APIs for C / C and Java JMS ++ a remote management console, scripts, federation, failover and AMQP-over-HTTP protocol by RestMS. AMQP Infrastructure, an installable package using yum compliant with AMQP 0-10 and maintained to the latest versions of Fedora. It includes management tools, agents and clients. Red Hat Enterprise MRG implements the AMQP 0-10 version whose range of features include federation distribution in active mode using Qpid as upstream, a web console and other business oriented features. Following is a simple PHP application :
1 | https://github.com/pdezwart/php-amqp |