ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Java Message Service - Wikipédia

Java Message Service

A Wikipédiából, a szabad enciklopédiából.

A Java Message Service (röviden JMS) egy Java API, amellyel üzeneteket lehet küldeni különböző szoftverkomponensek között. A JEE specifikáció részét képező JMS specifikációt a Java Community Process keretében fejlesztik a JSR 914 dokumentumban.

Az üzenetküldést implementáló arhitektúrákra szoktak Message Oriented Middleware (röviden MOM) néven is hivatkozni.

Tartalomjegyzék

[szerkesztés] Az üzenetezés általában

Elosztott rendszerekben az üzenetküldés egy úgynevezett lazán csatolt kommunikáció. Ez arra utal, hogy a szoftverkomponensek nem közvetlenül kommunikálnak egymással, hanem egy köztes (üzenetkezelő) komponens segítségével. A lazán csatoltság egyik előnye, hogy az üzenetek küldőinek nem is kell pontosan ismerniük a fogadókat, mert minden kommunikáció az üzenetsoron keresztül történik. (Ezzel ellentétes az úgynevezett szorosan csatolt kommunikáció, ami például a TCP socket-eknél, a CORBA-nál és az RMI-nél figyelhető meg.)

[szerkesztés] Modellek

A JMS API kétféle modellt támogat:

  • point-to-point modell
  • publish-subscribe modell

[szerkesztés] Point-to-Point

A point-to-point modell esetében a producer üzeneteket küld az üzenetsorba, a consumer pedig kiolvassa azokat a sorból. Ebben az esetben a producer ismeri az üzenet fogadóját és közvetlenül a fogadóhoz tartozó sorba pakolja az üzenetet. Ez az eset a következőkkel jellemezhető:

  • Egy üzenetet csak egy fogadó kap meg.
  • A producer-nek nem kell futnia, amikor a consumer megkapja az üzenetet és a consumer-nek sem kell futnia, amikor a producer elküldi az üzenetet.
  • Minden sikeresen kézbesített üzenetet visszaigazol a consumer.

[szerkesztés] Publish/Subscribe

A publish/subscribe modell adott témához (angolul topic) tartozó üzenetek publikálását támogatja. Nulla vagy több subscriber regisztrálhat egy-egy topic-ra. Ebben a modellben a kommunikáló felek nem ismerik egymást. Egy jó metafora ennek a szemléltetésére az anonim üzenőfal. Főbb jellemzői a következők:

  • Egy üzenetet több fogyasztó is megkaphat.
  • A publisher és a subscriber között fennáll egy időbeli függőség. A publisher-nek létre kell hoznia egy topic-ot, amelyre a kliensek feliratkozhatnak. A feliratkozott klienseknek folyamatosan aktívnak kell maradniuk ahhoz, hogy megkapják az üzeneteket vagy tartós feliratkozást kell használniuk (angolul durable subscription). Az utóbbi esetben újracsatlakozáskor minden üzenetet megkap a fogyasztó.

[szerkesztés] Elemei

A JMS az alábbi elemeket foglalja magába: [1]

JMS provider (magyarul szolgáltató)
A JMS szolgáltató nem más, mint egy Message Oriented Middleware (MOM) implementáció. A szolgáltató lehet tiszta Java implementáció, de lehet nemjavás MOM implementációhoz készített javás adapter is.
JMS kliens
Egy üzeneteket küldő és/vagy fogadó alkalmazás vagy folyamat.
JMS producer
Üzeneteket készítő és küldő JMS kliens.
JMS consumer
Üzeneteket fogadó (más szóval fogyasztó) JMS kliens.
JMS message
A JMS kliensek között szállított adatokat tartalmazó objektum.
JMS queue
Sor adatszerkezet, ahol az elküldött és a kézbesítésre váró üzenetek tárolódnak. Az üzeneteket a küldés sorrendjében kézbesítik, a kézbesített üzenetek törlődnek a sorból.
JMS topic
Elosztási mechanizmus több fogadónak szánt üzenetekhez.

[szerkesztés] API

A JMS API javax.jms csomagban található:

[szerkesztés] javax.jms.ConnectionFactory interfész

A szolgáltatóhoz való kapcsolódásra használhatják fel a kliensek ezt az interfészt. A kódot nem kell átírni, ha megváltozik a JMS implementáció. Adminisztrátori feladat a ConnectionFactory konfigurálása a JNDI névtérben, ahol a kliensek megtalálják. Az üzenet típusától függően használják a QueueConnectionFactory illetve a TopicConnectionFactory specializációkat.

[szerkesztés] javax.jms.Connection interfész

Ha megvan a ConnectionFactory, akkor létrehozható a kapcsolat a JMS szolgáltatóval. A Connection interfész reprezentálja a kapcsolatot az alkalmazás és az üzenetkezelő szerver között. A kapcsolat típusától függően lehetőség van üzenetek küldésére és fogadására üzenetsoron illetve topic-on keresztül.

[szerkesztés] javax.jms.Destination interfész

Üzenetek úticélját reprezentálja. Lehet sor is és topic is egyaránt. A JMS adminisztrátor hozza létre ezeket az objektumokat, a szoftverkomponensek pedig a JNDI-n keresztül fedezik fel őket. A ConnectionFactory esetéhez hasonlóan ebből is kétfélét lehet csinálni: sorokat a point-to-point kommunikációhoz és témákat (topic-okat) a publish/subscribe kommunikációhoz.

[szerkesztés] javax.jms.MessageConsumer interfész

Üzenetek fogadására alkalmas. A fogyasztó szinkron (blokkoló) és aszinkron (nem blokkoló) módon is fogadhat üzeneteket mindkét üzenetkezelési modellben.

[szerkesztés] javax.jms.MessageProducer interfész

Üzenetek küldésére alkalmas. Konkrét címzetthez is lehet rendelni, de lehet általános küldő is, amelynek mindig egy konkrét üzenet küldésekor adják meg a címzettet.

[szerkesztés] javax.jms.Message interfész

A termelő és a fogyasztó szoftverkomponensek között küldött objektum. Az üzenet három fő részből áll:

  1. header (kötelező): Operatív beállításokat tartalmaz az üzenetek azonosításához és irányításához.
  2. üzenettulajdonságok (opcionális): Egyedi, testreszabott mezőket és szűrőket tartalmazhat.
  3. üzenettest (opcionális): Ötféle üzenettípus létrehozására alkalmas (text message, map message, bytes message, stream message és object message).

[szerkesztés] javax.jms.Session interfész

Egyszálú kontextust biztosít üzenetek küldésére és fogadására. Az egyszálúság itt azt jelenti, hogy az üzeneteket szerializálják és egyesével kézbesítik a küldés sorrendjében. Támogatja a tranzakciókat is, a kontextus képes tárolni üzenetek egy csoportját a tranzakció kommittálásáig, azt követően pedig kézbesíti őket. Ha a tranzakciót visszagörgetik (rollback), akkor a rendszer nem kézbesíti az üzeneteket. A Session segítségével lehet üzenetküldőket és fogadókat létrehozni.

[szerkesztés] Verziótörténet

  • JMS 1.0.2b (2001. június 25.)
  • JMS 1.1 (2002. március 18.)

[szerkesztés] Provider implementációk

A JMS használatához szükség van egy JMS szolgáltatóra (provider), amely kezelni tudja a munkameneteket (session) és a sorokat (queue). Szolgáltató léteznek szabad szoftver implementációk, nyílt forráskód implementációk és kereskedelmi szoftverek is.

Nevezetesebb nyílt forráskódú implementációk:

  • Apache ActiveMQ0
  • OpenJMS
  • JBoss Messaging
  • JORAM

Nevezetesebb kereskedelmi implementációk:

  • BEA Weblogic
  • Oracle AQ
  • Sun Java System Message Queue
  • WebSphere MQ from IBM (formerly MQSeries)
  • SAP NetWeaver
  • SonicMQ

A különböző JMS implementációkról kimerítő összehasonlító táblázat szerepel itt: http://www.theserverside.com/reviews/matrix.tss

A Java EE specifikációnak az 1.4 verziótól kezdve része a JMS szolgáltató.

[szerkesztés] Külső hivatkozások

[szerkesztés] Lásd még

Egyéb üzenetkezelő technológiák, amelyek nem implementálják a JMS API-t:

  • Amazon Simple Queue Service - az Amazon.com által kínált üzenetkezelő architektúra. A felhasználók hozzáférést bérelhetnek, így nem kell saját szervert fenntartaniuk.
  • Microsoft Message Queuing - hasonló üzenetkezelő technológia a .Net rendszerhez


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -