# Advanced Message Queuing Protocol

El protocol Advanced Message Queuing Protocol (amb acrònim anglès AMQP) és un protocol de capa d'aplicació estàndard obert per a programari intermedi orientat a missatges. Les característiques definitòries d'AMQP són l'orientació de missatges, la cua, l'encaminament (incloent-hi punt a punt i publicació i subscripció), fiabilitat i seguretat.
AMQP imposa el comportament del proveïdor de missatgeria i del client en la mesura que les implementacions de diferents proveïdors siguin interoperables, de la mateixa manera que SMTP, HTTP, FTP, etc. han creat sistemes interoperables. Les estandarditzacions anteriors de middleware s'han produït a nivell d'API (per exemple JMS) i es van centrar a estandarditzar la interacció del programador amb diferents implementacions de middleware, en lloc de proporcionar interoperabilitat entre múltiples implementacions. A diferència de JMS, que defineix una API i un conjunt de comportaments que ha de proporcionar una implementació de missatgeria, AMQP és un protocol a nivell de cable. Un protocol a nivell de cable és una descripció del format de les dades que s'envien a través de la xarxa com un flux de bytes. En conseqüència, qualsevol eina que pugui crear i interpretar missatges que s'ajustin a aquest format de dades pot interoperar amb qualsevol altra eina compatible, independentment del llenguatge d'implementació.
AMQP és un protocol binari de capa d'aplicació, dissenyat per donar suport eficientment a una gran varietat d'aplicacions de missatgeria i patrons de comunicació. Proporciona una comunicació controlada pel flux orientada a missatges amb garanties de lliurament de missatges, com ara com a màxim una vegada (on cada missatge es lliura una vegada o mai), almenys una vegada (on és segur que cada missatge es lliurarà, però pot fer-ho diverses vegades) i exactament una vegada (on el missatge sempre arribarà i ho farà només una vegada), i autenticació i/o xifratge basat en SASL i/o TLS. Suposta un protocol de capa de transport fiable subjacent, com ara el protocol de control de transmissió (TCP).
L'especificació AMQP es defineix en diverses capes: (i) un sistema de tipus, (ii) un protocol simètric i asíncron per a la transferència de missatges d'un procés a un altre, (iii) un format de missatge estàndard i extensible i (iv) un conjunt de "capacitats de missatgeria" estandarditzades però extensibles.
Implementacions:
* Apache Qpid, un projecte de codi obert de la Fundació Apache.
* Apache ActiveMQ, un projecte de codi obert de la Fundació Apache.
* Azure Event Hubs.
* Azure Service Bus.
* Solace PubSub+, un corredor multiprotocol en maquinari, programari i núvol.
* JORAM, una implementació Java de codi obert del Consorci OW2.
* Apache Qpid manté suport per a diverses versions d'AMQP.
* StormMQ, un servei de cua de missatges allotjat que utilitza AMQP. S'ofereix com un servei de gestió comercial.
* RabbitMQ, un projecte de codi obert patrocinat per VMware, admet principalment AMQP 0-9-1, amb 1.0 mitjançant un connector.

## Referències

* ↑ O'Hara, J. ACM Queue, 5, 4, 2007, pàg. 48–55. DOI: 10.1145/1255421.1255424 [Consulta: free].
* ↑ Vinoski, S. IEEE Internet Computing, 10, 6, 2006, pàg. 87–89. DOI: 10.1109/MIC.2006.116.
* ↑ «OASIS AMQP version 1.0, sections 2.6.7-2.6.8» (en anglès). OASIS AMQP Technical Committee. [Consulta: 18 juny 2012].
* ↑ «OASIS AMQP version 1.0, sections 2.6.12-2.6.13» (en anglès). OASIS AMQP Technical Committee. [Consulta: 18 juny 2012].
* ↑ «OASIS AMQP version 1.0, section 5.1» (en anglès). OASIS AMQP Technical Committee. [Consulta: 18 juny 2012].
* ↑ «OASIS AMQP version 1.0, section 2.1» (en anglès). OASIS AMQP Technical Committee. [Consulta: 18 juny 2012].
* ↑ ShubhaVijayasarathy. «What is Azure Event Hubs? - a Big Data ingestion service» (en anglès). docs.microsoft.com. [Consulta: 21 maig 2019].
* ↑ axisc. «AMQP 1.0 in Azure Service Bus and Event Hubs protocol guide» (en anglès). docs.microsoft.com. [Consulta: 21 maig 2019].
* ↑ axisc. «Overview of AMQP 1.0 in Azure Service Bus» (en anglès). docs.microsoft.com. [Consulta: 21 maig 2019].
* ↑ «Solace PubSub+» (en anglès). solace.com.
* ↑ Qpid 0.22 - Apache Qpid