SlideShare a Scribd company logo
1 of 20
Copyright©2007KOMIXs.r.o.
1.
Copyright©2007KOMIXs.r.o.
Martin Ptáček, KOMIX s.r.o.
ptacek@komix.cz
Java Message Service (JMS)
Copyright©2007KOMIXs.r.o.
2.
Co je Messaging?
Specifikace a architektura JMS
Použití JMS API
Závěrečné shrnutí
Otázky a odpovědi, Diskuse
Obsah
Copyright©2007KOMIXs.r.o.
3.
• Způsob komunikace mezi komponentami a aplikacemi.
• Specifikace, která popisuje jakým způsobem programy
mohou vytvářet, odesílat, přijímat a číst distribuované
zprávy.
• Loosely coupled communication
– Destination, Message format
• Email je pro člověka to samé co Messaging pro aplikace.
Java Message Service (JMS)
Co je Messaging (zasílání zpráv)?
Copyright©2007KOMIXs.r.o.
4.
• Vznikla na základě již existujících implementací.
• Umožňuje aplikacím vytvářet, odesílat, přijímat a číst
zprávy.
• Definuje:
– Modely komunikace
– Spolehlivost (Reliable)
– Podporu transakcí
– Distribuovatelnost
– Bezpečnost
Java Message Service (JMS)
Specifikace JMS
Copyright©2007KOMIXs.r.o.
5.
• JMS provider
– Implementace JMS API
– Apache ActiveMQ, JBoss Messaging, BEA Weblogic, OpenJMS,
WebSphereMQ atd.
• JMS clients
– Aplikace nebo proces, který odesílá a/nebo přijímá zprávy.
• JMS Message
– Objekt obsahující data, která jsou posílána mezi klienty.
Java Message Service (JMS)
Architektura JMS
Copyright©2007KOMIXs.r.o.
6.
• Model Point to point
– Queues (fronty)
– Od jednoho odesílatele k jednomu příjemci
• Model Publish/Subscribe
– Topics (témata)
– Od jednoho odesílatele více příjemcům
Java Message Service (JMS)
Modely komunikace
Copyright©2007KOMIXs.r.o.
7.
Java Message Service (JMS)
Model Point-to-Point
Client 1
Sends
Queue Client 2
Msg Msg
Delivers
Subscribes
Copyright©2007KOMIXs.r.o.
8.
Java Message Service (JMS)
Model Publish/Subscribe
Client 1
Publishes Client 2
Msg Msg
Topic
Delivers
Subscribes
Client 3
Delivers
Subscribes
Copyright©2007KOMIXs.r.o.
9.
Java Message Service (JMS)
Použití JMS API
Dohledáno v JNDI
Dohledáno v JNDI
Copyright©2007KOMIXs.r.o.
10.
• Synchronní
– Použití metody receive()
– Blokující thread
• Asynchronní
– Registrování posluchače, který implementuje MessageListener
– MDB specifikace JavaEE
Java Message Service (JMS)
Způsoby příjmu zprávy
Copyright©2007KOMIXs.r.o.
11.
• Header
– JMSMessageID, JMSDestination, JMSExpiration, JMSPriority,
JMSCorrelationID, JMSReplyTo, JMSDeliveryMode
• Properties (nepovinný)
– Jméno-Hodnota
• Body (nepovinný)
– JMS API definuje několik typů zpráv
• TextMessage, MapMessage, BytesMessage, StreamMessage,
ObjectMessage
Java Message Service (JMS)
JMS Message
Copyright©2007KOMIXs.r.o.
12.
• PERSISTENT
– Dochází k ukládání zpráv dokud není zpráva bezpečně
doručena příjemci či příjemcům.
– Nesmí dojít ke ztrátě zprávy při výpadku serveru (JMS Provider)
• NON_PERSISTENT
– Není zajištěna persistence zprávy
Java Message Service (JMS)
Režimy doručování (Delivery Mode)
Copyright©2007KOMIXs.r.o.
13.
• CLIENT_ACKNOWLEDGE
– Konzument sám pošle potvrzení přijetí zprávy voláním metody
acknowledge()
• AUTO_ACKNOWLEDGE
– Automatické potvrzení po příjmu
– Po korektním opuštění metody receive() nebo onMessage()
• DUPS_OK_ACKNOWLEDGE
– Postupné (Lazy) potvrzování přijetí
– Konzument musí být schopen přijímat duplicity
Java Message Service (JMS)
Potvrzování příjmu (Acknowledge)
Copyright©2007KOMIXs.r.o.
14.
• Redelivery
– Opakované doručení zprávy
• Nastává při nepotvrzení přijetí z důvodu neočekávané chyby
– Vlastnost JMS implementace
– Možno nastavit
• Počet opakování
• Časový interval (timeout) mezi jednotlivými opakováními
• Dead Letter Queue (DLQ)
– Fronta pro zprávy, které nebyly úspěšně doručeny
Java Message Service (JMS)
Redelivery
Copyright©2007KOMIXs.r.o.
15.
• Filtrování zpráv pro zpracovatele
– Definuje zpracovatel
– Možno filtrovat na základě údajů v Header a Properties
• SQL 92 subset
– Example: JMSPriority > 5 AND JMSType = ‘???’
• POZOR!!!
– Specifikace nedefinuje, jak a kde se provádí
Java Message Service (JMS)
Message Selector
Copyright©2007KOMIXs.r.o.
16.
• Implementace servisního synchronního volání
• Odesílatel čeká na odpověď
– Simulace remote volání
• Několik způsobů implementace
– javax.jms.QueueRequestor
• Jednoduchá implementace součástí JMS API
– Použití Temporary Queue
– Použití Message Selector
Java Message Service (JMS)
Request-Reply Pattern
Copyright©2007KOMIXs.r.o.
17.
• Výhody
– Velice robustní a škálovatelné řešení
– Vysoká spolehlivost
– Snadná implementace
– Podpora ve standardu JEE
• Nevýhody
– Java API, pouze některé komerční implementace nabízejí
možnost využití z jiných jazyků
Závěrečné shrnutí
Java Message Service
Copyright©2007KOMIXs.r.o.
18.
• http://download.oracle.com/javaee/1.3/jms/tutorial/
• http://knol.google.com/k/lukas-zapletal/java-message-
service-1-1/1as80wv4bdzca/6#
Závěrečné shrnutí
Odkazy
Copyright©2007KOMIXs.r.o.
19.
Otázky a odpovědi
Otázky?
Copyright©2007KOMIXs.r.o.
20.
Děkuji za vaši pozornost
Martin Ptáček
ptacek@komix.cz
+420 225 989 981
KOMIX s.r.o.
Holubova 1, 150 00 Praha 5
www.komix.cz

More Related Content

More from Martin Ptáček

2010 JBoss Application Server
2010 JBoss Application Server2010 JBoss Application Server
2010 JBoss Application ServerMartin Ptáček
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise AplikacíMartin Ptáček
 
2009 Uživatelské rozhraní webových aplikací
2009 Uživatelské rozhraní webových aplikací2009 Uživatelské rozhraní webových aplikací
2009 Uživatelské rozhraní webových aplikacíMartin Ptáček
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEEMartin Ptáček
 
2009 X33EJA Výkonové Aspekty JEE
2009 X33EJA Výkonové Aspekty JEE2009 X33EJA Výkonové Aspekty JEE
2009 X33EJA Výkonové Aspekty JEEMartin Ptáček
 
2010 X33EJA Vysoká Dostupnost JEE Systémů
2010 X33EJA Vysoká Dostupnost JEE Systémů2010 X33EJA Vysoká Dostupnost JEE Systémů
2010 X33EJA Vysoká Dostupnost JEE SystémůMartin Ptáček
 

More from Martin Ptáček (6)

2010 JBoss Application Server
2010 JBoss Application Server2010 JBoss Application Server
2010 JBoss Application Server
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
 
2009 Uživatelské rozhraní webových aplikací
2009 Uživatelské rozhraní webových aplikací2009 Uživatelské rozhraní webových aplikací
2009 Uživatelské rozhraní webových aplikací
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
 
2009 X33EJA Výkonové Aspekty JEE
2009 X33EJA Výkonové Aspekty JEE2009 X33EJA Výkonové Aspekty JEE
2009 X33EJA Výkonové Aspekty JEE
 
2010 X33EJA Vysoká Dostupnost JEE Systémů
2010 X33EJA Vysoká Dostupnost JEE Systémů2010 X33EJA Vysoká Dostupnost JEE Systémů
2010 X33EJA Vysoká Dostupnost JEE Systémů
 

2010 X33EJA Java Message Service