|
< Back | Wikipedia | Home | Dark Mode Java Message ServiceA Java Message Service (roviden JMS) egy Java API, amellyel uzeneteket lehet kuldeni kulonbozo szoftverkomponensek kozott. A JEE specifikacio reszet kepezo JMS specifikaciot a Java Community Process kereteben fejlesztik a JSR 914 dokumentumban. Az uzenetkuldest implementalo architekturakra szoktak message-oriented middleware (roviden MOM) neven is hivatkozni. Az elosztott rendszerekben az uzenetkuldes egy ugynevezett lazan csatolt kommunikacio. Ez arra utal, hogy a szoftverkomponensek nem kozvetlenul kommunikalnak egymassal, hanem egy koztes (uzenetkezelo) komponens segitsegevel. A lazan csatoltsag egyik elonye, hogy az uzenetek kuldoinek nem is kell pontosan ismerniuk a fogadokat, mert minden kommunikacio az uzenetsoron keresztul tortenik. (Ezzel ellentetes az ugynevezett szorosan csatolt kommunikacio, ami peldaul a TCP socket-eknel, a CORBA-nal es az RMI-nel figyelheto meg.) A JMS API ketfele modellt tamogat:
A point-to-point modell eseteben a producer uzeneteket kuld az uzenetsorba, a consumer pedig kiolvassa azokat a sorbol. Ebben az esetben a producer ismeri az uzenet fogadojat es kozvetlenul a fogadohoz tartozo sorba pakolja az uzenetet. Ez az eset a kovetkezokkel jellemezheto:
A publish/subscribe modell adott temahoz (angolul topic) tartozo uzenetek publikalasat tamogatja. Nulla vagy tobb subscriber regisztralhat egy-egy topic-ra. Ebben a modellben a kommunikalo felek nem ismerik egymast. Egy jo metafora ennek a szemleltetesere az anonim uzenofal. Fobb jellemzoi a kovetkezok:
A JMS az alabbi elemeket foglalja magaba: [1]
A JMS API javax.jms csomagban talalhato: A szolgaltatohoz valo kapcsolodasra hasznalhatjak fel a kliensek ezt az interfeszt. A kodot nem kell atirni, ha megvaltozik a JMS implementacio. Adminisztratori feladat a ConnectionFactory konfiguralasa a JNDI nevterben, ahol a kliensek megtalaljak. Az uzenet tipusatol fuggoen hasznaljak a QueueConnectionFactory illetve a TopicConnectionFactory specializaciokat. Ha megvan a ConnectionFactory, akkor letrehozhato a kapcsolat a JMS szolgaltatoval. A Connection interfesz kepviseli a kapcsolatot az alkalmazas es az uzenetkezelo szerver kozott. A kapcsolat tipusatol fuggoen lehetoseg van uzenetek kuldesere es fogadasara uzenetsoron illetve topic-on keresztul. Uzenetek uticeljat reprezentalja. Lehet sor is es topic is egyarant. A JMS adminisztrator hozza letre ezeket az objektumokat, a szoftverkomponensek pedig a JNDI-n keresztul fedezik fel oket. A ConnectionFactory esetehez hasonloan ebbol is ketfelet lehet csinalni: sorokat a point-to-point kommunikaciohoz es temakat (topic-okat) a publish/subscribe kommunikaciohoz. Uzenetek fogadasara alkalmas. A fogyaszto szinkron (blokkolo) es aszinkron (nem blokkolo) modon is fogadhat uzeneteket mindket uzenetkezelesi modellben. Uzenetek kuldesere alkalmas. Konkret cimzetthez is lehet rendelni, de lehet altalanos kuldo is, amelynek mindig egy konkret uzenet kuldesekor adjak meg a cimzettet. A termelo es a fogyaszto szoftverkomponensek kozott kuldott objektum. Az uzenet harom fo reszbol all:
Egyszalu kontextust biztosit uzenetek kuldesere es fogadasara. Az egyszalusag itt azt jelenti, hogy az uzeneteket sorbarendezik es egyesevel kezbesitik a kuldes sorrendjeben. Tamogatja a tranzakciokat is, a kontextus kepes tarolni uzenetek egy csoportjat a tranzakcio vegrehajtasaig, azt kovetoen pedig kezbesiti oket. Ha a tranzakciot visszagorgetik (rollback), akkor a rendszer nem kezbesiti az uzeneteket. A Session segitsegevel lehet uzenetkuldoket es fogadokat letrehozni.
A JMS 2.0 a Java Community Process tartja karban JSR 343 neven. A JMS hasznalatahoz szukseg van egy JMS szolgaltatora (provider), amely kezelni tudja a munkameneteket (session) es a sorokat (queue). Szolgaltato leteznek szabad szoftver implementaciok, nyilt forraskod implementaciok es kereskedelmi szoftverek is. Nevezetesebb nyilt forraskodu implementaciok:
Nevezetesebb kereskedelmi implementaciok:
A kulonbozo JMS implementaciokrol kimerito osszehasonlito tablazat szerepel itt: http://www.theserverside.com/reviews/matrix.tss Archivalva 2008. augusztus 20-i datummal a Wayback Machine-ben A Java EE specifikacionak az 1.4 verziotol kezdve resze a JMS szolgaltato.
Egyeb uzenetkezelo technologiak, amelyek nem implementaljak a JMS API-t:
Source: hu.wikipedia.org |