JMS
Inhoudsopgave Hoofdstuk 1.JMS..................................................................2 1.1.Inleiding...............................................................................................................2 1.2.Messaging architectuur.......................................................................................3 1.2.1.Point to point domein...................................................................................3 1.2.2.Publish/Subscribe domein...........................................................................4 1.2.3.Synchrone - asynchrone verwerking...........................................................4 1.2.4.De Naming Service......................................................................................4 1.3.Java Messaging Service API..............................................................................5 1.3.1.Overzicht......................................................................................................5 1.3.2.Message Oriented Middleware....................................................................9 1.3.3.Boodschappen versturen...........................................................................10 1.3.4.Boodschappen ontvangen.........................................................................11
Copyright 2012 Noël Vaes
-1-
www.noelvaes.eu
JMS
Hoofdstuk 1. JMS 1.1. Inleiding Voor de communicatie tussen gedistribueerde componenten kunnen we gebruik maken van technologieën zoals RMI en CORBA. Deze hebben echter als nadeel dat de componenten die met elkaar communiceren erg sterk aan elkaar gekoppeld zijn. Zo moeten de componenten elkaars remote interface kennen en hiervan methoden oproepen. Bovendien moet de client wachten totdat de server het verzoek heeft afgehandeld en eventueel een antwoord heeft teruggestuurd. Tenslotte kan de client niet verder werken als de server niet actief is. Om tegemoet te komen aan de nood aan een lossere koppeling tussen software componenten, maakt men gebruik van boodschappensystemen (messaging). Hierbij zendt de client een boodschap naar de server via een tussenliggend boodschappensysteem. De client kan na het afleveren van de boodschap verdergaan met zijn werk en hoeft niet te wachten op onmiddellijk antwoord van de server. Het boodschappensysteem beheert de boodschappen en levert deze ten gepaste tijde af bij de server. Deze kan de boodschap verwerken en eventueel een boodschap terugsturen naar de client. De boodschappen worden beheerd door een tussenliggende server, een middleware server. Men noemt dit vaak ook Message Oriented Middleware (MOM).
Client
send message
MOM
consume message
Server
Het systeem van boodschappen biedt een aantal voordelen: 1. Er is een losse koppeling tussen de componenten. Vooreerst hoeft de client geen gedetailleerde kennis te hebben van de werking van de server. Hij stuurt gewoon een boodschap die verder door de server verwerkt moet worden. De server kan bovendien vervangen worden door een andere implementatie zonder dat de client gewijzigd moet worden of hiervan zelfs op de hoogte gebracht moet worden.Het is zelfs mogelijk dat verschillende servers eenzelfde boodschap verwerken. 2. De communicatie verloopt asynchroon. De client kan na het afleveren van de boodschap aan de MOM gewoon verdergaan met zijn werk en hoeft niet te wachten totdat de server de boodschap verwerkt heeft en eventueel een antwoord heeft teruggestuurd. 3. De server hoeft niet noodzakelijk online te zijn opdat de client zou kunnen werken. Dit impliceert dat een component verder kan werken, ook al zijn bepaalde delen van de gedistribueerde applicatie tijdelijk niet actief. Copyright 2012 Noël Vaes
-2-
www.noelvaes.eu
JMS
Intussen zijn er verschillende messaging systemen op de markt gekomen die allemaal op een verschillende manier aangesproken kunnen worden. Om de toegang tot dit soort messaging systemen uniform te maken binnen het JAVAplatform, werd de Java Messaging Service (JMS) API gedefinieerd. Deze zorgt ervoor dat de verschillende systemen op gelijkaardige wijze aangesproken kunnen worden. Dit vereenvoudigt de ontwikkeling van dergelijke applicaties en bevordert de overdraagbaarheid ervan.
JMS API
Client
JMS API
MOM
Server
De JMS API maakt deel uit van Java Enterprise Edition (JEE) . We merken verder op dat de termen client en server hier enkel wijzen op de rol die ze spelen in het verzenden en verwerken van boodschappen. In een gedistribueerde applicatie kunnen componenten zowel de taak van client als van server op zich nemen.
1.2. Messaging architectuur Bij messaging systemen hebben zich twee verschillende methoden ontwikkeld: 1. Point to point methode. 2. Publish/subscribe methode De JMS API is ontworpen om beide methoden op gelijkaardige wijze te gebruiken. Men spreekt hier over messaging domeinen.
1.2.1. Point to point domein Bij de point to point methode gebeurt het verzenden van de boodschappen tussen twee vaste eindpunten. De MOM houdt hierbij een wachtrij (Queue) bij waar de client zijn boodschappen aflevert. De server gaat op zijn beurt de boodschappen uit deze wachtrij halen en één voor één verwerken. Zodra de server aangeeft dat een boodschap verwerkt is, wordt deze uit de wachtrij verwijderd.
Copyright 2012 Noël Vaes
-3-
www.noelvaes.eu