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, ü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
szerkesztésAz AMQP fejlesztésének eredeti célja az üznetkü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.[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-szel
szerkesztésGyakori 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
szerkesztésAMQP 1.0 bróker megvalósítások
szerkesztés- 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
szerkesztés- 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ó.
Kliensek
szerkesztés- 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
szerkesztés- ↑ 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
Fordítás
szerkesztésEz a szócikk részben vagy egészben az Advanced Message Queuing Protocol című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.