Advanced Message Queuing Protocol
# Advanced Message Queuing Protocol

Das Advanced Message Queuing Protocol (AMQP) ist ein offener Standard, der ein binäres Netzwerkprotokoll auf Anwendungsebene für eine Message-orientierte Middleware (MOM) darstellt.

AMQP stellt ein binäres Netzwerkprotokoll dar, das unabhängig von der Programmiersprache ist. Um der großen Verbreitung von JMS Rechnung zu tragen, sind alle Funktionen von JMS in dem Protokoll eingearbeitet worden. Dies ermöglicht es den Entwicklern, weiter die JMS-Schnittstelle zu nutzen, während sich MOMs untereinander mit AMQP verständigen können.

## Entstehung

AMQP wurde 2003 von John O’Hara, einem Mitarbeiter von JPMorgan Chase in London, erfunden. Die weitere Entwicklung von AMQP wurde durch ein Konsortium kreiert, das sich aus Finanzinstitutionen und Softwaredienstleistern zusammensetzt. Dazu zählen Bank of America, JPMorgan Chase, Barclays Bank, Goldman Sachs, Credit Suisse, Deutsche Börse und Red Hat, VMware, Microsoft, INETCO - Systems, IONA Technologies, Cisco Systems und andere. Im Juni 2006 wurde hierzu eine Arbeitsgruppe gegründet und im Mai 2010 wurde der Draft (Entwurf) der Version 1 veröffentlicht.

## Unterstützung

AMQP ist lediglich ein Protokoll zur Kommunikation zwischen Client und Message-Broker bzw. zwischen verschiedenen Message-Brokern. Hier einige Anbieter bzw. Message-Broker, die AMQP unterstützen.

### AMQP 1.0 Broker Implementierungen

* SwiftMQ, ein JMS, AMQP 1.0 und AMQP 0.9.1 Broker und AMQP 1.0 Client (alle Open Source, Apache 2 Lizenz).
* Microsoft Windows Azure Service Bus, Microsofts cloud-basierter Messaging Service
* Apache Qpid, ein Open-Source-Projekt der Apache Software Foundation.
* RabbitMQ, eine in der Programmiersprache Erlang durchgeführte Implementierung von VMware 2010.
* Apache ActiveMQ, hat einen AMQP 1.0 kompatiblen transport connector, siehe auch Apache ActiveMQ
* Apache Artemis, basiert auf HornetQ und gilt als deutlich performanter als ActiveMQ
* RedHat JBoss AMQ, Version 6 basiert auf Apache Active MQ, Version 7 basiert auf Apache Artemis

### Client Unterstützung

* SwiftMQ AMQP 1.0 Java Client ein freier Java Client für AMQP 1.0.
* DE.SETF.AMQP, ein Common Lisp Client Library für AMQP 0-9-1.

Für das Spring-Framework existiert mit Spring AMQP ebenfalls Unterstützung für AMQP 0-9-1.

## Normen und Standards

* OASIS, AMQP Version 1.0 am 31. Oktober 2012.
* ISO/IEC 19464:2014-05 Informationstechnologie - Advanced Message Queuing Protocol (AMQP) v1.0 Specifikation
* CAN/CSA-ISO/IEC 19464:2018-01-01 Information technology - Advanced Message Queuing Protocol (AMQP) v1.0 specification (Adopted ISO/IEC 19464:2014, first edition, 1. Mai 2014)
