Az Advanced Message Queuing Protocol (AMQP) egy alkalmazási réteg protokoll, amely üzenet orientált middleware-ek működését határozza meg. Az AMQP meghatározó értékei: üzenet központúság, sorkezelés, üzenetirányítás, megbízhatóság, biztonság. Az AMQP 5 különböző üzenettovábbítási mintát támogat, amelyekkel pont-pont és különböző publikálás-feliratkozás típusú kommunikációs mintákat is támogat. Az AMQP 1.0 ISO szabvány (ISO/IEC 19464:2014 Information technology—Advanced Message Queuing Protocol (AMQP) v1.0 specification) és OASIS szabvány is (OASIS Advanced Message Queuing Protocol (AMQP)).

Története Az AMQP fejlesztésének eredeti célja az üzenetküldésben a különböző platformok és üzenetbrókerek között jelentkező gyakori együttműködési problémák megoldása volt. Az AMQP-t eredetileg 2003-ban John O ' Hara fejlesztette JPMorgan Chase-nél, Londonban. Első "éles" alkalmazása a JP Morgen-nél volt, 2006-ban. Ma a specifikációt az AMQP working group fejleszti, amelynek 23 tagja van, elsősorban a pénzügyi és technológiai szektorokból.

Összevetés a JMS-szel Gyakori kérdés, hogy a JMS és az AMQP közötti különbség miben is áll?

A JMS egy olyan szabvány, amelynek célja, hogy a Java platformon szabványos felületet nyújtson különböző üzenetbrókerek eléréséhez. Nem célja ugyanakkor, hogy a Javától eltérő platformokkal vagy nyelvekkel való együttműködést támogassa. Ezért a Java és más nyelvek (pl. .NET vagy Ruby) közötti üzenetalapú együttműködés csak az egyes platformokon támogatott eltérő szabványok (pl. JMS – STOMP) közötti transzformációkon keresztül lehetséges. Ugyan több üzenetbróker is támogat ilyen transzformációkat (pl. az ActiveMQ), ám – mivel az átalakítások nem szabványosított eljárásokon alapulnak – ezek használata esetén a konkrét megoldással szembeni kitettség alakul ki.

Az AMQP célja elsősorban a különböző platformok közötti együttműködési képesség megteremtése. A JMS-sel szemben nem definiál egyetlen nyelvhez sem konkrét programozási felületet (API-t). Ehelyett egy alacsony szintű, bináris protokollt határoz meg, ami arról szól, hogy milyen struktúrában és milyen módon kell egy üzenetet a hálózaton keresztül továbbítani. Az AMQP-üzenetbróker egy olyan program, amely képes a meghatározott formában a feladótól üzeneteket fogadni, és a meghatározott módon azokat a címzetthez továbbítani. Az AMQP kliens egy olyan program, amely képes a meghatározott módon üzeneteket küldeni az AMQP-brókernek, és üzeneteket fogadni tőle. Mivel az üzenetküldés és továbbítás módja, valamint az üzenetek struktúrája teljes mértékben szabványosított, így biztosított, hogy az egyes AMQP-brókerek, illetve kliensek szabadon kicserélhetők tetszőleges másik implementációra.

Az AMQP ugyanakkor—mint azt már említettük—nem foglalkozik azzal, hogy az egyes platformokon illetve programnyelveken hogyan kell megvalósítani azt az API-t, amin keresztül a kliens funkciók meghívhatók; ezt a kérdést a kliens fejlesztőjére hagyja, aki így az adott platform és programnyelv sajátosságait figyelembe véve tudja az API-t kifejleszteni.

A fentieken túl a JMS és az AMQP között eltérés van az üzenet irányítás (routing), a támogatott üzenetküldési minták és az üzenet felépítésben is. Ezen különbségek számottevőek, ugyanakkor a két szabvány egymáshoz mégis eléggé hasonlít ahhoz, hogy a köztük végzett transzformáció ne okozzon komolyabb problémát. A JMS széles körű elterjedtsége és támogatása okán az AMQP working groupnál elindult egy kezdeményezés, hogy szabványosítsák a JMS és az AMQP közötti üzenet átalakítást.

Implementációk

AMQP 1.0 bróker megvalósítások

Apache Qpid, egy nyílt forráskódú projekt az Apache Alapítvány kezelésében Apache ActiveMQ, egy nyílt forráskódú projekt az Apache Alapítvány kezelésében

Pre-1.0 AMQP-bróker megvalósítások

JORAM, a Java nyílt forráskódú megvalósítása az OW2 Konzorcium kezelésében. Apache Qpid, amely több AMQP verzióhoz nyújt támogatásthttps://web.archive.org/web/20130914045254/http://qpid.apache.org/releases/qpid-0.22/index.html StormMQ, egy hostolt, kereskedelmi jellegű message queuing szolgáltatás AMQP-alapon. RabbitMQ, egy nyílt forráskódú projekt; elsődlegesen az AMQP 0-9-1 verziót támogatja, de kísérleti pluginnel már az 1.0 verzió is használható.

Kliensek SwiftMQ AMQP 1.0 Java Client – ingyenes Java Client (AMQP 1.0) DE.SETF.AMQP Lisp Client Library (AMQP 0-9-1) Spring AMQP (AMQP 0-9-1.)

Jegyzetek

Fordítás

További információk AMQP weboldal

Kategória:Hálózati protokollok