Advanced Message Queuing Protocol
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, üzenet-irá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 üznetküldésben a különböző platformok és üzenetbrokerek 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.[1] 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-sel
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ő üzenet-brokoerek 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 üzenet borker 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 message broker 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 brokernek, é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 brokerek 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 group-ná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ást[2]
- 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ó.
További információk
Hivatkozások
- ↑ Hintjens, Pieter: Background to the AMQ Project, Authors. iMatix Corporation, 2006. február 7. (Hozzáférés: 2018. február 18.)
- ↑ https://web.archive.org/web/20130914045254/http://qpid.apache.org/releases/qpid-0.22/index.html