Advanced Message Queuing Protocol

számítógépes hálózati protokoll

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és

Az 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és

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 szerkesztés

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

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

  1. Hintjens, Pieter: Background to the AMQ Project, Authors. iMatix Corporation, 2006. február 7. (Hozzáférés: 2018. február 18.)
  2. https://web.archive.org/web/20130914045254/http://qpid.apache.org/releases/qpid-0.22/index.html

Fordítás szerkesztés

Ez 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.

További információk szerkesztés

AMQP weboldal