Rendszerintegráció és -felügyelet labratórium (VIMIM309) Megbízható üzenetküldés IBM WebSphere MQ alapn Mérési segédlet Készítette: Hegedüs Ábel Utlsó módsítás: 2012. március 8. Verzió: 1.1 Budapesti Műszaki és Gazdaságtudmányi Egyetem Méréstechnika és Infrmációs Rendszerek Tanszék
Megbízható üzenetküldés IBM WebSphere MQ alapn 1 Bevezető A labr srán a méréseket végző hallgató a gyakrlatban is megismerkedik a rendszerintegráció és rendszerfelügyelet srán használats módszerekkel és eszközökkel. Végigköveti egy elszttt alkalmazás megvalósításának és felügyeletének legfntsabb lépéseit, ipari környezetben használt integrációs köztes réteg (middleware) technlógiák és felügyeleti eszközök használatával. A mérések a következő témakörökhöz kapcslódnak: 1. Munkaflyamatk megvalósítása Java nyelven 2. Megbízható üzenetküldés IBM WebSphere MQ alapn 3. Kmmunikáció JMS és JMX technlógia segítségével 4. OSGi szlgáltatásk fejlesztése 5. Mdell alapú eszközintegráció elszttt környezetben (SDE) 6. Felügyeleti adatk vizuális elemzése 7. Rendszerfelügyelet támgatás kmplexesemény-feldlgzással A jelen mérés srán az üzenetsrk alkalmazásával kell munkaflyamatt megvalósítani, az IBM WebSphere MQ köztes réteg megbízható üzenetküldési szlgáltatásait felhasználva. A hallgatók az előző mérésen készített Java alapú munkaflyamatt alakítják üzenet alapú vezérlésűvé, ezáltal elsajátítva az üzenetsrkhz kapcslódó alapvető ismereteket. 2 A mérés célja Az üzenetsrkat prgramk közötti kmmunikációra használják. Az alkalmazásn belüli prgramk alkalmazás-specifikus adatk (üzenetek) srkba írásával és srkból lvasásával kmmunikálnak anélkül, hgy privát, dedikált, lgikai kapcslat lenne közöttük. Az MQSeries az IBM ipari köztes réteg megldása üzenetküldéshez és srk használatáhz. Használatával lehetővé válik lyan prgramk kmmunikációja, amelyek különböző kmpnenseken vagy hálózatn helyezkednek el. 1. ábra MQSeries futásidőben Ahgy az ábrán látható, a prgramk a Message Queue Interface-en (MQI) keresztül Queue Managerekkel (MQM) kmmunikálnak, amelyek az üzenetsrkat kezelik. 1 Az üzenetküldés alkalmazásával a prgramk üzenetek frmájában küldenek adatt egymásnak, nem közvetlen híváskkal. A srk használatakr a kmmunikáló prgramknak nem kell knkurensen futniuk. 1 MQSeries Primer: http://www.redbks.ibm.cm/redpapers/pdfs/redp0021.pdf 2
Megbízható üzenetküldés IBM WebSphere MQ alapn Aszinkrn üzenetküldés esetén a küldő prgram nem vár válaszüzenetet, hanem tvábbhalad, míg szinkrn üzenetküldéskr megvárja a választ a végrehajtás flytatása előtt. 2.1 MQSeries Az MQSeries felhasználható kliens-szerver és elszttt környezetben is, míg az MQSeries-t használó prgramk többféle prgramnyelven is készülhetnek (ezek közül a Java az egyik). Használatakr a prgramzó nem a cél alkalmazás nevét köti meg, ahva üzenetet küld, hanem egy cél üzenetsrt, és minden üzenetsr alkalmazáshz van rendelve. Egy alkalmazásnak több bemeneti és több kimeneti sra is lehet. A prgramzónak azzal sem kell törődnie, hgy a cél prgram elfglalt vagy egyáltalán elérhető-e, az MQSeries elintézi a célállmáshz való szállítást, amikr az elindul, ha ez szükséges. Az alkalmazásk futhatnak flyamatsan, vagy triggerelhetők is, amikr egy vagy adtt számú üzenet érkezett. 2. ábra Üzenetek és srk Az ábrán két, egymással kmmunikáló prgram látható, ahl az egyik kimeneti sra a másik bemeneti sra és frdítva. A téglalapk a srk és prgramk között az MQI-t, vagy API-t reprezentálják, amelyen keresztül az MQM-el kmmunikálnak a prgramk. 2.2 Üzenetek Az üzenetek két részből állnak: az adat, amelyet az egyik prgram a másiknak küld és az üzenet leíró vagy fejléc. A fejlécben találhatók az üzenet aznsítója és egyéb vezérlési infrmációk. Az MQSeries képes az üzenetek szegmentálására és csprtsítására. A szegmentálás használható a nagyméretű üzenetek felbntására, ha nem férne bele az üzenetsrba, míg az üzenetek csprtsításával kis üzenetek kapcslhatók össze, a hálózati frgalm csökkentése érdekében. Az MQSeries négyféle üzenetet ismer: Datagram: infrmációs üzenet, amelyre nem várnak választ Resuest: lyan üzenet, amelyre választ várnak Reply: egy Request üzenetre adtt válasz Reprt: egy eseményt leíró üzenet, például hiba jelzés vagy megerősítés egy üzenet megérkezéséről. Megkülönböztetünk tvábbá perzisztens és nem-perzisztens üzeneteket. A perzisztens üzenetek átvitele garantált, még rendszerösszemlás után is, míg nem-perzisztens üzenetek esetén ilyen garancia nincs. A fejléc a következő infrmációkat tartalmazza: 3
Versin Message ID / Crrelatin ID Persistent / nn-persistent Pririty Date and time Lifetime f a message Megbízható üzenetküldés IBM WebSphere MQ alapn Return address Frmat Sender applicatin and type Reprt ptins/ Feedback Backut cunter Segmenting gruping infrmatin A versin a használt MQSeries verziójától és a használt platfrmtól függ. A ID-k az egyes kérés és válasz üzenetek aznsítására valók. A pririty segítségével az üzenetek feldlgzási srrendjét lehet beflyáslni. A Date and time az üzenet küldésének időpntja, a lifetime megadja, hgy mennyi idő után legyen érvénytelen az üzenet. A return address megadja, hgy hva kell válaszlni egy kérésre, ez replyt sr és egy reply-t queue manager adatkat tartalmaz. 2.3 Queue manager Az MQSeries közpnti része az üzenetsr kezelő (MQM), amely a futásidejű része az MQSeries-nek. Feladata az alkalmazáskhz tartzó srk és üzenetek kezelése. Ő szlgáltatja az MQI interfészt az alkalmazásknak a kmmunikációhz. Egy prgram küldhet üzenetet lyan alkalmazásnak, amely ugyanazn a gépen fut, és lyannak is, amelyik egy távli gépen. Távli gépre küldött üzenetek kezeléséhez az MQM csatrnákat használ. Az MQM funkciói a következők: Srk és üzenetek kezelése. MQI interfész szlgáltatása. Létező hálózati megvalósításk használatával az üzenetek más MQM-ekhez való eljuttatása. Adatbázisk és srk frissítése kétfázisú cmmit használatával. Üzenetek szegmentálása és összerakása, ha ez szükséges. Üzenetek csprtsítása és szétválgatása. Egy üzenet több célpnthz való elküldése a hálózati frgalm csökkentésével. Adminisztratív funkciók srk létrehzásáhz és törléséhez, srk tulajdnságainak megváltztatására, és az MQM működésének irányítására. Az MQSeries 5.1-es verzió grafikus interfészt is biztsít, más platfrmkn parancssrs felületek vagy panelek használhatók. Az MQM bjektum a következő típusú bjektumkat használhatja: Üzenetsrk: üzenetek tárlása Flyamat definíciók: alkalmazásk leírása (név, elérési út) triggereléshez Csatrnák: lgikai kmmunikációs kapcslat. Üzenetcsatrna: két MQM közötti egyirányú csatrna üzenetek átvitelére MQI csatrna: kliens és szerver közötti interfész csatrna 4 3. ábra Üzenet és MQI csatrnák
Megbízható üzenetküldés IBM WebSphere MQ alapn 2.4 Üzenetsr Az MQSeries többféle üzenetsr típust ismer, ezek: Lcal queue: valódi sr, amelyhez alkalmazásk kapcslódnak, az adtt MQM tulajdna. Cluster queue: lyan lcal queue, amelyet egy fürtben lévő több MWM ismer. Remte queue: más MQM tulajdnában lévő sr helyi definíciója, amely csak üzenet küldést enged meg. Transmissin queue: speciaális lcal queue, amely köztes lépcső egy remte queue-hz. Ezen keresztül lehet üzenetet küldeni más MQM-eken található srkba. Dynamic queue: az alkalmazás által definiált lcal queue, az MQM törölheti, ha az alkalmazás befejezte futását. Alias queue: sr definíció, amely segítségével egy srhz több név rendelhető különböző tulajdnságkkal. Mdel queue: attribútumk gyűjteménye amelyet dynamic queue-k létrehzásakr használnak Initiatin queue: Trigger üzenetek tárlására használt sr, két MQSeries alkalmazás figyeli a srt, az alkalmazás indító és a csatrna indító. Reply-t-queue: lyan sr, ahva válaszüzeneteket vár egy alkalmazás, a kérés üzenet fejlécében kerül átadásra. Dead-Letter queue: Ide kerülnek a nem elküldhető üzenetek. Például ha tele van vagy nem létezik a célsr, nem lehet üzenetet elhelyezni a célsrba, túl nagy az üzenet, stb. Repsitry queue:fürtözött MQM-ek által használt sr. 2.5 Queue Manager létrehzása Egyszerre több MQM is létrehzható és futtatható egymás mellett. A létrehzáshz a crtmqm [/q] MYQMGR parancs használható, ahl a /q paraméter pcinális és az alapértelmezett MQM kijelölésére alkalmas. Az MQM neve érzékeny a kis és nagybetűkre. Az MQM-ek létrehzásáhz és kezeléséhez Windws n grafikus interfész is elérhető. A dead-letter queue nem jön létre autmatikusan, ehhez az MQM-et a következő paranccsal kell létrehzni: crtmqm /q /u system.dead.letter.queue MYQMGR Az MQM elindítása a strmqm paranccsal történik. 2.6 Kliensek és szerverek Az MQSeries különbséget tesz kliensek és szerverek között. A kliensek lehetnek vékny- (vagy MQSeries) vagy vastagkliensek. A vastag kliensek rendelkeznek saját MQM-el. A következő hárm fajta munkaállmás létezik: MQSeries kliens: nincs saját MQM-je, egy szerveren található MQM-en sztzik más kliensekkel. MQSeries szerver: kliens és szerver is lehet, köztes csmópntként viselkedik kliensek között. 5
Megbízható üzenetküldés IBM WebSphere MQ alapn Leaf nde: egy felhasználó által használt csmópnt, amelynek van saját MQM-je, de nem viselkedik köztes pntként más klienseknek. Más néven vastagkliens. 2.7 Üzenetküldés és fgadás A kliens által elindíttt prgram a következőképpen helyezhet el üzenetet egy srba az MQI hívásával. Először csatlakzni kell a szerveren futó MQM-hez, utána meg kell nyitni az üzenetsrt, el kell helyezni az üzenetet a srban, le kell zárni a srt és végül le kell kapcslódni az MQM-ről. 4. ábra Kliensek és szerver kmmunikációja A szerveren a következő bjektumkra van szükség a kérés fgadásáhz: egy szerver kapcslat csatrna, egy lcal queue, amelybe a kliens az üzenetet teszi, egy initiatin queue, amelybe a trigger üzenet a sr megnyitásakr érkezik, a flyamat definíció, amely megadja melyik prgramt kell elindítani a trigger esemény hatására, végül pedig azk a srk, amelyekbe a válasz üzeneteket kell tenni. A választ a kliens kétféleképpen kezelheti: Társalgási módban az alkalmazás vár az üzenet megérkezésére a tvábbhaladás előtt. Vagyis a válasz sr nyitva van és egy üzenetlekérés várakzással parancst adtt ki az alkalmazás. Az alkalmazásnak kezelnie kell azt, ha az üzenet megérkezik időben és azt, hgy az időzítés lejár és nincs üzenet. Igazi aszinkrn módban az alkalmazás nem vár válaszüzenetre. Általában későbbi interakció (például gmbnymás) miatt kérdezi le a válasz sr tartalmát. Az üzenetet így az aktuális vagy egy másik prgram is feldlgzhatja. 2.8 Message Queuing Interface (MQI) Az interfész a következő 13 API-t tartalmazza: MQCONN MQDISC MQOPEN MQCLOSE Kapcslódás MQM-hez Lekapcslódás MQM-ről Sr megnyitása Sr lezárása 6
Megbízható üzenetküldés IBM WebSphere MQ alapn MQPUT MQGET MQPUT1 MQINQ MQSET MQCONNX MQBEGIN MQCMIT MQBACK Üzenet elhelyezése a srban Üzenet kivétele srból MQOPEN + MQPUT + MQCLOSE Objektum tulajdnságainak lekérdezése Objektum tulajdnságainak beállítása Alapértelmezett vagy gyrsíttt kapcslódás Adatbázis tranzakció (munkaegység) indítása Munkaegység lezárása Visszavnás 2.9 WebSphere MQ sztályk Java-hz Azknak a Java sztályknak a gyűjteménye, amelyek segítségével kapcslódni lehet a kliensként vagy direktbe egy MQ szerverhez. 2 A kliens többféle módn tud kapcslódni a szerverhez: akár Java-t tartalmazó böngészőből, appletviewer-ből, egyszerű Java prgramból vagy alkalmazásszerverről. Windws rendszeren feltelepített WebSphere MQ esetén a következő elérési útvnalak lehetnek fntsak: Terméktelepítési könyvtár: \Prgram Files\IBM\WebSphere MQ\java Mintagyűjtemény: \Prgram Files\IBM\WebSphere MQ\tls\Java\ Környezeti váltzók: CLASSPATH=mq_rt_dir\java\lib\cm.ibm.mq.jar; mq_rt_dir\java\lib\cnnectr.jar; mq_rt_dir\tls\java\base\; mq_rt_dir\java\lib\jta.jar; PATH=install_dir\lib Felhasználáshz el kell indítani az MQM-et, majd a runmqsc [QMNAME] parancs végrehajtása után definiáljunk egy csatrnát a következő paranccsal (vagy használjuk a grafikus interfészt): DEF CHL( JAVA.CHANNEL ) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER( ) + DESCR( Sample channel fr WebSphere MQ classes fr Java ) Majd indítsuk el a listener prgramt a következő paranccsal: runmqlsr -t tcp [-m QMNAME] -p 1414 Az alapértelmezett MQM használata esetén a m kapcsló elhagyható. A kapcslat teszteléséhez lépjünk át a mintagyűjtemény könyvtárba és futtassuk a mintaalkalmazást a következő paranccsal: java MQIVP Ez a prgram megpróbál csatlakzni és lekapcslódni a megnevezett MQM-ről, megnyitni, üzenetet elhelyezni, kivenni és lezárni az alapértelmezett srn. Végül visszaad egy üzenetet, ha minden sikerült. A parancssrn a következőket lehet tenni: TCP/IP kapcslat esetén írjuk be a szerver hst nevét, natív kapcslat esetén hagyjuk üresen. A többi adat értelemszerűen kitöltendő. 2 Using Java with WebSphere MQ: http://publibfp.bulder.ibm.cm/epubs/pdf/csqzaw12.pdf, 7
A következő esetleges hibaüzenetek lehetnek: Megbízható üzenetküldés IBM WebSphere MQ alapn Unable t identify lcal hst IP address The server is nt cnnected t the netwrk. Cnnect the server t the netwrk and retry. MQRC_ADAPTER_CONN_LOAD_ERROR If yu see this z/os errr, ensure that the WebSphere MQ SCSQANLE and SCSQAUTH datasets are in yur STEPLIB statement. 2.10 Java prgramk írása WebSphere alapn Egy egyszerű példaalkalmazás leírása és magyarázata megtalálható a Using Java with Websphere MQ leírás 7-ik fejezetében. A példaalkalmazásban részletesen be van mutatva az MQM-hez való csatlakzás, egy sr megnyitása, üzenet elhelyezése, üzenet levétele, sr bezárása és MQM-ről való lekapcslódás. Ugyanezen leírás 9-ik fejezete részletesen tárgyalja a Java alkalmazáskban használható MQ sztálykat, így a mérés srán ezek nézegetése erősen ajánltt. 3 A mérés elvégzése A mérés srán a hallgatóknak át kell alakítaniuk az első mérésen készült prgramjukat lyan frmába, hgy a flyamat egyes lépései közötti adatáramlás üzenetsrk segítségével legyen megldva. Az összes csmópnt külön Java flyamat legyen (nem csak thread), amelyek kizárólag a WebSphere MQ üzenetsrain keresztül kmmunikálnak, nincs közpnti szinkrnizációs kmpnens. A csmópntk között tényleges adatáramlás legyen, ne csak primitív tken átadás. A következő feladatkat kell elvégezni: MQManager grafikus interfészén keresztül MQM létrehzása és a flyamat csmópntjai közötti kmmunikációhz szükséges egyes üzenetsrk létrehzása. Java sztályk átalakítása, lehetőleg a kmmunikáció elkülönítése (ahgy előző mérésen is). Általában egy get és egy put metódus megvalósítása szükséges, amely magába fglalja az MQMel való kmmunikációt. Flyamat lépéseinek összekötése a megfelelő ki és bemeneti srk megadásával. Egyszerű grafikus megjelenítés, ahl látható az adtt csmópntn elérhető adat és léptethető a flyamat, valamint elágazás esetén döntés kiválasztható. A flyamat többszörösen futtatható legyen az MQManager kezelő prgram használata nélkül (ne maradjn futást zavaró üzenet a srkban). 3.1 A mérés kiértékelése A mérés után leadtt jegyzőkönyvben szerepeljen a mérés elvégzéséhez szükséges lépések leírása megismételhető módn. Legyen benne a megvalósíttt flyamat rövid leírása, azk a műveletek, amelyeket az MQManager grafikus felületén el kellet végezni, a létrehztt üzenetsrk és paramétereik. Szerepeljen benne az, hgy hgyan és mennyire kellett az eredeti prgramt megváltztatni, hgyan valósíttták meg az egyes csmópnt típuskat. Tartalmazzn megfelelő mennyiségű képernyőképet és útmutatót ahhz, hgy hgyan kell lefuttatni az elkészült prgramt. 8
Megbízható üzenetküldés IBM WebSphere MQ alapn 4 Ellenőrző kérdések A beugró kérdések kizárólag ebben a dkumentumban leírtakat fgják visszakérdezni, a két linkelt leírás a mérés elvégzéséhez szükséges pluszinfrmációkat tartalmazzák. 1. Mik az üzenetsr alapú kmmunikáció előnyei? 2. Hgyan valósítható meg szinkrn működés üzenetsrkkal? 3. Milyen feladatk végezhetők el az MQManager-el? 4. Milyen típusú srk vannak az MQSeries-ben? 5. Milyen típusú üzenetek vannak az MQSeries-ben? 9