Message Oriented Middleware (MOM) Java Message Service (JMS)
Transcription
Message Oriented Middleware (MOM) Java Message Service (JMS)
http://www-adele.imag.fr/~donsez/cours Message Oriented Middleware (MOM) Java Message Service (JMS) Didier DONSEZ Université Joseph Fourier (Grenoble 1) IMA IMAG/LSR/ADELE [email protected] [email protected] http://www-adele.imag.fr/~donsez/cours Message Oriented Middleware (MOM) Didier DONSEZ Université Joseph Fourier (Grenoble 1) IMA IMAG/LSR/ADELE [email protected] [email protected] 3 03/03/2005 Motivations Modèle Client-Serveur ! " %&'" # ! # $! ( Une alternative : la messagerie inter-application MOM & JMS, D. Donsez, 1998-2005 & " ) ! # , ! #& - #-. / # # & + ! * 4 03/03/2005 Motivations Applications (passage à très grande échelle) 00 / #1 0 " 2 MOM & JMS, D. Donsez, 1998-2005 , #% * ) ! , ) ! 3 && # # ! 7* !& " +++ )! * +++ -% # !!& , ) 45 )6 # / 20& / " # !& +++ ) * $ * 4 0 " 5 #* . / && " && # & & ) # 7* 5 03/03/2005 Principe Messagerie inter-application 8 "! 1 !! & ) % 9* Files de Messages (Message Queueing) & MOM & JMS, D. Donsez, 1998-2005 .& " " # #1 #1 # " # " 0& # 1 & & 1 !!& 0& ! !& !!& :& ! )+ + # ! Avantages %& %& ! !!& # ) 0& && # ! %& ) "! 3 5 8 7* " * * 6 03/03/2005 Principe des Files de Messages (i) 1 MOM & JMS, D. Donsez, 1998-2005 1 7 03/03/2005 Principe des Files de Messages (ii) 1 MOM & JMS, D. Donsez, 1998-2005 1 8 03/03/2005 Principe des Files de Messages (iii) MOM & JMS, D. Donsez, 1998-2005 2 2 9 03/03/2005 Principe des Files de Messages (iv) MOM & JMS, D. Donsez, 1998-2005 2 2 10 03/03/2005 Modèles de messageries Routage de Message ! &1# ! & # & 1 !!& # " !!& "" & "" ' ! # 0 ! ' % & & & & # " : "! # " Modèles ; " MOM & JMS, D. Donsez, 1998-2005 %& )! # -, " %& " # " & "" ! # 00 ! : -, & ! & ! %& # 00 : ) 1< ! =+ ! & & ! ! %& -, * ! ) & & % # ! %& ! # 1, ! 7* !! - % %* 11 03/03/2005 Modèle des Message Queues 1 1 MOM & JMS, D. Donsez, 1998-2005 2 1 2 2 12 03/03/2005 Modèle Publication-Souscription 1 MOM & JMS, D. Donsez, 1998-2005 2 2 1 03/03/2005 MOM & JMS, D. Donsez, 1998-2005 Publication-Souscription sur des topics hiérarchiques 13 14 03/03/2005 Publication-Souscription par le contenu ! " #! " 1 2 MOM & JMS, D. Donsez, 1998-2005 $" % " &" 1 "$" % " 2 &" #! " 15 03/03/2005 Modèle Requête-Réponse Implémente le modèle Client-Serveur #' #' ( * ) & ") req " # " MOM & JMS, D. Donsez, 1998-2005 & res # " 16 03/03/2005 Modèles de messageries Routage hiérarchiques de Messages :&> ? . # && # & ! %& # " # ' " ! # .& 0 #0 / # "!& #1 # & --#1 ! ) +++* ---@ " MOM & JMS, D. Donsez, 1998-2005 ++ ,, "" ## && ##** ++ ++ ++ ,, "" ## && ##** ## && ##** 17 03/03/2005 Architecture d ’un MOM Client MOM & # " ' ! " A # " : Serveurs MOM & # " " %& " # MOM & JMS, D. Donsez, 1998-2005 !& ) ' 3 8 ! # ! # & # # 7 " !" # Administrateur/Contrôleur du MOM # 0 # 0 && & 0& & !& # & !& # )! # 7* * 18 03/03/2005 Implémentation Architecture &" &" & &" &" &" * &" % - - MOM & JMS, D. Donsez, 1998-2005 * * : QoS ! %& . %& :&1 && , 7 &" 19 03/03/2005 Architecture d ’un MOM - - #(#( & &" " MOM & JMS, D. Donsez, 1998-2005 -- ## ** - - #(#( & &" " 0 # 1 "2 % -- ## ** 3 % . % " / . -- ## "" " / 03/03/2005 Exemple multiplateforme d ’un MOM (IBM MQ-Series) Hétérogénéité de Systèmes et de Réseaux ( ( & &" " MOM & JMS, D. Donsez, 1998-2005 ## ** 00 &&11 ( ( & &" " 4 # % & "2 3 ## ** 6666 4545 # # $ $ ( ( & &" " 1 & "2 3 ## ** 77 20 21 03/03/2005 Avantages Réutilisation 4 #1 ! & "%& %& MOM & JMS, D. Donsez, 1998-2005 Fiable Simple d ’Utilisation Répandu Supporté par de grands acteurs 03/03/2005 MOM & JMS, D. Donsez, 1998-2005 Comparaison RPC et MOM 22 23 03/03/2005 Interopérabilité entre MOM Difficulté de faire intéropérer des MOM Pas de standardisation entre les MOM ,! 0 ; # ; & #& )! 6 ! * ,0? 4B4 7 C !((///+% "+ Des pistes pour l ’interopérabilité = # ##& / D+E MOM & JMS, D. Donsez, 1998-2005 # # & # " F$ F , F ! " # F :# & "!& " #1 # ( F ,, # " 24 03/03/2005 Interopérabilité entre MOM - - #(#( & &" " -- ## ** - - #(#( & &" " 0 # 1 "2 % MOM & JMS, D. Donsez, 1998-2005 0 -- ## ** 3 % . - - #(#( & &" " # % 1 "2 -- ## ** 3 % " / . -- ## % " / . "" " / - - "+"+ ! " # "$ % Issues : End-to-End Transactional delivery ? -- ## "" 25 03/03/2005 Le Transactionnel La consommation et la production de messages peuvent être des actions recouvrables & 0& # " %& # "" Elles ne sont effectives qu ’à la validation d ’une transaction MOM & JMS, D. Donsez, 1998-2005 & " #1 % # % # # & 0& ! # # & & " :& & " "" La transaction peut être distribuée & )G 4, 7* &# ! # 26 03/03/2005 Conséquences du Transactionnel Conception de Requête-Réponse transactionnel &1 0 # & " # & ! # & ! $ & #" % & MOM & JMS, D. Donsez, 1998-2005 T1 & " & #" % & * # "#" % & T2 & #" % & * "#" % & & & & "#" % & " " T3 27 03/03/2005 Conséquences du Transactionnel MOM & JMS, D. Donsez, 1998-2005 L ’ordre de consommantion des messages peut être différent de l ’ordre de production begin T1 T1 produit M1 T1 produit M2 commit T1 begin T2 T2 consomme M1 begin T3 T3 consomme M2 abort T2 commit T3 begin T4 T4 consomme M1 commit T4 30 03/03/2005 Acteurs et Produits BEA Systems IBM - MQ Series $H!& 0" MicroSoft - MSMQ (Message Queue Server) && " 84 Level 8 Systems - Falcom MQ ! && , ; ;, MOM & JMS, D. Donsez, 1998-2005 Sybase - DBQ # ! , Tibco - TIB/RendezVous # & ! & I Sun - Java Messaging Service ! & ; 31 03/03/2005 IBM MQ/Series Leader du marché (66% du marché) Plates-formes @$E!& H! & -0 " & ) 99 %& F Nombreux modules MOM & JMS, D. Donsez, 1998-2005 %& (, % % 3 20& / +++ 5(J 7* 32 03/03/2005 MSMQ (MicroSoft Message Queue) Plates-formes NT/2000 (v2) et XP (v3) G & ! 4 ) < ! & & ?44 (?44 , " : ! * ) D* & !! , ) D* Modèles (v3) MOM & JMS, D. Donsez, 1998-2005 -4 % 5 &-4 " ; ) #1 , K , ;! -4 & 4 " # #1 99 %6 G ! , ; !& * 33 03/03/2005 MSMQ (MicroSoft Message Queue) Serveur (v2) L ! # ! " ! 0 " & , ! " !& ) 2 !, &% ,! , ; MOM & JMS, D. Donsez, 1998-2005 0 & * && & , ! ) , 0 " && & 0& #1 * && # # , , 0" &) , & ) ; ,* ,;5 , !M &# " $ < ! 0& ) $* J 4 ! * ) 4,* ) D* Client 3 # / 3 N 7 , K , ;! 99 G , ; !& 35 03/03/2005 Exemple d ’ASP utilisant MSMQ et MTS * / ) ! " #$ % ) * ') # ) + &# + ' & % (! ! ! ) , # ) ,* ,/ ) / ) ) MOM & JMS, D. Donsez, 1998-2005 1 ! 0 0 # 56 0 0 # % ! + 1" $ 2 3 45 ! 0 0 # 1 / % 5177##! 8 ! ' 9 8 ! " ' 5: 0 0 % 0 0 # 1$ 4; < = 6: 1 ! 56: % ! + 1" $ 2 3 45 ! 12 > % 5" 0 5: 1 2 % 5 2 0 1' + > % : 1? + + % : 1! 4 0 0 6: 0 0 1" 46: ) ,- $ ' . ) ,* 0 5: ) $ 1A 0 ') -$ '.) 45 " ) $ 46 @ + 2 1A 1A 45 45 ! 46 @ ) 2 ! 56: + > 156: B ) + > 156: B 36 03/03/2005 JORAM (ObjectWeb & Scalagent) MOM JMS ); & -, * %, %)4 ! * MOM & JMS, D. Donsez, 1998-2005 ! , :F 8 , ! %& ,< ! # !& C 2F ! KC #" ! # ) # % #& ,< & F G* Utilisation K &2 ) " , # & 7 # & * ) " # " # ! * 37 03/03/2005 JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs = # ! 5 . &% # ) 5 !& 4 & & ? "" # ! %& , & " O ),@E* 5 & :! * & # " " ) * !& . # )! ?44 ,,5 7 #1 # & %& # # & & MOM & JMS, D. Donsez, 1998-2005 * )F< # & & !* F ,! ( ! % & , # " O 03/03/2005 JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs Une destination par serveur ( (8 8 (( && (( && ( (8 8 ( (8 8 MOM & JMS, D. Donsez, 1998-2005 ( #: # (( && ( (8 8 ; ; ; ( (8 8 $ J 99 %% ## ** 99 %% ## ** 38 03/03/2005 JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs Equilibrage de charge (( && ( (8 8 ( (8 8 ( MOM & JMS, D. Donsez, 1998-2005 (( && ; J #: # ( (8 8 ( (8 8 ; ; J ! 99 %% ## ** 99 %% ## ** 39 03/03/2005 JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs Haute disponibilité (1) (( && ( (8 8 ( (8 8 MOM & JMS, D. Donsez, 1998-2005 9 ; 99 %% 99 J ## ** %% %* # # * * %* % %* * ; J ! 99 %% ## ** %% "" 40 03/03/2005 JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs Haute disponibilité (2) (( && ( (8 8 ( (8 8 MOM & JMS, D. Donsez, 1998-2005 9 ; 99 %% 99 J ## ** %% %* # # * * %* % %* * ; J ! 99 %% ## ** %% "" 41 42 03/03/2005 MOM et BDs Nomades (Mobiles) Motivation 8 " # 5 # ! +++ :6 & # " # !& " # 6 & MOM & JMS, D. Donsez, 1998-2005 Réplication des BDs & & P % & !& Q Produits " 3 # G && # 4 0 # 4& & +++ 43 03/03/2005 MOM et BDs Nomades (Mobiles) 1- Réplication 2- Synchronisation )* + )* + , )* + )* + , - )* ) - ./ & '( )* ) - ./ & '( MOM & JMS, D. Donsez, 1998-2005 - 44 03/03/2005 MOM et BDs Nomades (Mobiles) 3- Détection de Collision 4- Reprise sur Erreur )* + )* + )* + , )* + , - )* ) - ./ & '( )* ) - ./ & '( MOM & JMS, D. Donsez, 1998-2005 - 45 03/03/2005 MOM et Composants Motivations . R & " !! # # "" # " #'& ! : "! & ! # " ) & * Modèles MOM & JMS, D. Donsez, 1998-2005 +8 4 F$ ( F S 3 T && )! # ! # " * http://www-adele.imag.fr/~donsez/cours Java Message Service (JMS) Didier DONSEZ Université Joseph Fourier (Grenoble 1) IMA IMAG/LSR/ADELE [email protected] [email protected] 47 03/03/2005 Motivation Messaging Oriented Middleware " - !!& &1 & & " !! ! # " !!& ! # :# " # +++ ! # ! " " "" ! & &(, # $ %&' ( ) javax.jmx API Java d ’un client à un serveur MOM MOM & JMS, D. Donsez, 1998-2005 #'& # " : )* )% + +% !# %& !! ! & * 0& # 1 -, !# * ! # " )% 6 + & 1 % # % * !& # 48 03/03/2005 Architecture JMS & & ! & 99 #(#( & &" " <#9 <#9 & & # ! 2 # " "!& 99 9 9% %* *% %# # MOM & JMS, D. Donsez, 1998-2005 & F ,, # 99 1 1 & &$9$9 #(#( & &" " %% ## ** ## ** ## # #9 9 #(#( & &" " ## 44 1 &1 0 #(#( & &" " #. <#<# && <#1 <#1 % %" "* * # # 4#4#( ( ( ( = == = ( ( " % % & & # # * * # # #5#5 3 3 % . & : ** % <#<# javax.jmx ! # / " / ## 49 03/03/2005 Modèle Point à Point Point-to-Point Concept de Queue = ) , = , MOM & JMS, D. Donsez, 1998-2005 && && && !& * ) + + 0& # 1 & ) # " A ) * " : * ** * & " # & %% && ## ** %% ## .. ** 50 03/03/2005 Modèle Publication-Souscription Publish-Subscribe Concept de Topic (centre d intérêt) = ) !& 4 & MOM & JMS, D. Donsez, 1998-2005 ++ ++ ++ * " # - %% && ## ** A : & " - 51 03/03/2005 API JMS Superclasses communes a PTP et PubSub 9 # % &" > # . * > # " " " / ? '( * " 0 0 MOM & JMS, D. Donsez, 1998-2005 / $* + + ) "* 1 . $ "" " 0 * 1 $ ) 3 " * ) + . $ "" 0 ** ) $ ) 4 ) 0 * 2 52 03/03/2005 Fonctionnement d ’un client typique JMS Phase d ’initialisation (setup) MOM & JMS, D. Donsez, 1998-2005 & 1 %6 ) !& ! F8 * %6 * F , ) !& *0 & ) *+ 1 ( + & 0 & )& * * # " # :& # # " " ! F8 & F , & & # Phase de consommation/production de messages # " # " & & 53 03/03/2005 Les objets administrés par le Provider Les objets administrés par le Provider 5 ! #1 ': %& ! F8 ! & 1 #" # ! & 1 #" # 5 * 5 #" ! & %& ! F8 Les objets MOM & JMS, D. Donsez, 1998-2005 5 ! & & & 0 & & & 0 !! ) ! 4 ( ! 0 0 & &* & 1 / & # # F , 0 # + * & 5 0 ! & & & 4 ( & # F , & 54 03/03/2005 Rôle ! & & & 0 & & 4 ( ! 0 & # 0 # F , # & Cycle de vie & ( 0 & 0 + & !! ) ! ! 1 & + * &* & 1 / + + & !% # " MOM & JMS, D. Donsez, 1998-2005 ! '# :& & # + !% ! "! & & ! 0" &% !% !% # # + 1 00 ! &1 55 03/03/2005 0 Rôle " & + & # & " 0% 0% # 0 # & &1 " # MOM & JMS, D. Donsez, 1998-2005 # 0 # 1 & ! 0 ! * # + #1 # & !% # 0 " ) + O # & ! * "! # " # + + # " " ! !% - !% "" ! # * * 58 03/03/2005 + représente l ’objet consommateur des messages ! & 0 0% 5 5 3 0 0 3 0 " 0 &! - 3 0 "0 "0 ! 0 % 0 " % + !& ! 0 , ! " " * 0 " Réception Synchrone des messages & & " # ! 5 + " !%" + ! %" + ( 6 !% MOM & JMS, D. Donsez, 1998-2005 Réception Asynchrone des messages & & ! %6 "!& " %6 :& 1 # 5 + # + 5 + & !+ " & & " &1 " %7+ & & + # + 0 + !+ & !% % # & 1 %6 & 1 & & 1 & #! && " & 59 03/03/2005 + 1 représente l ’objet producteur des messages ! & 0 0% 5 5 0 1 0 0 2 " 0 1 &! - 0 0 + " " * 1 2 " Production des messages 5 MOM & JMS, D. Donsez, 1998-2005 5 0 1 !+ 2 % 2 !+ % 2 ! !& ! 0 , ! % % 1 60 03/03/2005 Le modèle Point à Point Point-To-Point PTP Classes et interface 9 * 0 + + .. # % &" 1 > # " 0 0 3 ) 4 MOM & JMS, D. Donsez, 1998-2005 " !& ! ! " " ! 0 ! "" & ! # ! & " " 3 # + 5 " & # & ! 1 !& & &1 # # ! # 5 ) 4 ! " # & & " # & & " )" # / / F , & &1 # # & !%* 03/03/2005 Le modèle Publication-Souscription Publish-Subscribe PubSub Classes et interface 9 MOM & JMS, D. Donsez, 1998-2005 * 0 + + # % &" > # 0 1 0 1 ? 2 " & & " P ! %& " P Q Q ! # :P ! # ! # :P Q "" Q 61 62 03/03/2005 Le modèle de Messages JMS L ’interface 3 + C 13 1 Motivation #'& "" , !! , !! : &1 & ! # U # %6 F L ’interface 3 + C 13 - & 0 & # & ) " F ,& !& -0 " +++* G 5 1 -> < <$ 23 <! < C Structure d ’un Message ) * "! "" # MOM & JMS, D. Donsez, 1998-2005 # ! &1# ) 0 # * %& # " * "! !!& " ! ! ! ! ! ! !) ) # # ! 0 !!& & )! # ! * & # !!& *! !& "! # 1 # & ! & #1 & # ! 63 03/03/2005 Le modèle de Messages JMS Les champs d ’entête Nom des champs d ’entête MOM & JMS, D. Donsez, 1998-2005 8+ 0 * 8+ 0 * 8+ 8+ 8+ 8+ 8+ 8+ 8+ 8+ 0 0 0 0 0 0 0 0 / + 3 3 1 9 + 9 : ( ; ( <1 / 3 0 0 / ( 9# 1/30 0 /( 9 9 > & ! * 9 # + # 9 2 * 9 # = 9 # * 9 # 9 = 9 ! ? > @% = & % 2 + !3 + 73 % 3 ! Consultation/Modification " # AAA!% 7 AAA!% VAAA & "# "! # 1 % 64 03/03/2005 Le modèle de Messages JMS Les champs de propriétés Nom des propriétés ! ! MOM & JMS, D. Donsez, 1998-2005 9 9 9 9 9 9 # # < < < <. < <@ ! # :# "! # 1 4@ #9 < 4@ 9 4@ #9 < 9 <4@ #9 <( & * "% 9 "% " 9 B !4 %" C ! %" D ! * /( &"9 2 # ! ! ! 0 ! ! !!& & # ! = <4@ 9 # %" E ! #1 % ! 8+ 0 <F "!& " #1 ! & = "! 0 0& "" # "!& ! 8+ 0 A "! 0 ( ! # " G 5 & ! 0 + 65 03/03/2005 Le modèle de Messages JMS Les champs de propriétés Enumération des propriétés / 1 ( !% 7 / + * 8 + 0 A1 0 D / !0 4( ! E 6 0 C % ( 0 Valeur des propriétés " 4! " # " # MOM & JMS, D. Donsez, 1998-2005 5 1 !! & : 5 " 2 # " # ; & # ) A ( 6 ) 1 ! ! 1 & "; !0 " !0 %" %" ! & "0 2 & " "& " % % 1 !0 1 / ") !0 1 1 & ! ! + ! # ; %" " ! "0 ) !% #1 ; " " %" !0 AAA1 %6 "# !0 1 ! ! " " 1 &1 4! " !% "* "0 !% 66 03/03/2005 Le modèle de Messages JMS Le corps (body) du message Sous interfaces de + + 0 " & # " + ! A " ?# " A" " & # ; , 7 " - & #&"*% # - B " # & %" &# " % 1 % + %6 F & - B "# "- B " ?# "- B " - B " # + %& # ) ! * & "# % 4& " ?2 " 4& " & " # # & "# % 5 / " 5 / " CD ?2 " 5 / " - B "# % - B " ?#2 " - B " - B " # " 0 " + & "# "4& " " & #& % #?# "4& " " & #& % - B "# "- B " " & ?# "- B " " & MOM & JMS, D. Donsez, 1998-2005 G 5 # "%& # ! ) " 5 / " CD + 0& # # )' * * & "# % 4& " ?2 " 4& " & " # # " & # % " & ?2 " - B "# % - B " ?#2 " - B " - B " # " 1 & " & " & && " 67 03/03/2005 Remarque: Message SOAP sur JMS MOM & JMS, D. Donsez, 1998-2005 In a recent "Strategic Planning" research note, Gartner issued a prediction that "by 2004, more than 25 percent of all standard Web services traffic will be asynchronous...." and "by 2006, more than 40 percent of the standard Web services traffic will be asynchronous." 68 03/03/2005 Le modèle de Messages JMS Le corps (body) du message Méthodes & " # ) !% & & ! Remarque MOM & JMS, D. Donsez, 1998-2005 & ! #1 " A & & 03/03/2005 Le modèle de Messages JMS Le corps (body) du message String textstr = "<?xml version=\"1.0\"?><!DOCTYPE person SYSTEM \"person.dtd\">" +"<person><firstname>Joe</firstname><lastname>Smith</lastname>" +"<salary value=\"10000.0\"><age value=\"38\"></person>"; // l ’API javax.xml est préférable pour construire le document XML TextMessage textmsg = session.createTextMessage(); textmsg.setText(textstr); MapMessage mapmsg = session.createMapMessage(); mapmsg.setString("Firstname", "Joe"); mapmsg.setString("Lastname", "Smith"); mapmsg.setLong("Age", 38); mapmsg.setDouble("Salary", 10000.0); MOM & JMS, D. Donsez, 1998-2005 Person object = new Person("Joe","Smith", 37); object.setAge(38); object.setSalary(10000.0); ObjectMessage objectmsg = session.createObjectMessage(); objectmsg.setObject(object); // Person doit implémeter java.io.Serializable Byte[] bytesarray = { 'J','o','e',' ','S','m','i','t','h'}; BytesMessage bytesmsg = session.createByteMessage(); bytesmsg.writeBytes(bytesarray); bytesmsg.writeInt(38); bytesmsg.writeDouble(10000.0); StreamMessage streammsg = session.createStreamMessage(); streammsg.writeString("Joe"); streammsg.writeString("Smith"); streammsg.writeFloat(10000.0); streammsg.writeLong(38); 69 03/03/2005 Le modèle de Messages JMS Le corps (body) du message TextMessage textmsg = (TextMessage)receivedmsg; String textstr=textmsg.getText(textstr); System.out.println(textstr); // le document XML peut être parsé MapMessage mapmsg = (MapMessage)receivedmsg; String firstname= mapmsg.getString("Firstname"); String lastname= mapmsg.getString("Lastname"); long age= mapmsg.getLong("Age"); double salary= mapmsg.getDouble("Salary"); System.out.println(firstname + " " + lastname + " " + age + " " + salary); MOM & JMS, D. Donsez, 1998-2005 ObjectMessage objectmsg = (ObjectMessage)receivedmsg; Person object = (Person)objectmsg.getObject(); System.out.println(object.toString()); BytesMessage bytesmsg = (BytesMessage)receivedmsg; Byte[] bytesarray ; int length=bytesmsg.readBytes(bytesarray); long age= bytesmsg.readLong(); double salary= bytesmsg.readDouble(); StreamMessage streammsg = (StreamMessage)receivedmsg; String firstname= streammsg.readString(); String lastname= streammsg.readString(); long age= streammsg.readLong(); double salary= streammsg.readDouble(); System.out.println(firstname + " " + lastname + " " + age + " " + salary); 70 03/03/2005 Le modèle de Messages JMS La sélection (filtrage) des messages Motivation & + & + 1 & ! &1 ! & # " " & " 0& & : & A ! 0 :& 0% # + 0 # A ! ! &1 ! & Expressions de sélection - "%& # ,;5-N$ & ) O 8 " 3 G / 7 '& 0 / * ; 3 " '( * " ( ; " ! % H " I " H J" I J" I H " J" )/ 6 / / ( " & K / " ( " 0 L( ; M ( G & & MOM & JMS, D. Donsez, 1998-2005 # 0 "!& 0 JN8 + 0 3 JO J O '( * ! JO 3 O; 3 ! JO " O % '( * %P 0 (; ( G & & NP 71 72 03/03/2005 Exemple : Point à Point La partie commune % "% " "% " "% " "% " #9 "#E #( & " A "# % & F # ( && " &# ( && # & # & F #* # " " & # ( && % & G #& 2 #4& " % ( & " A " F ( && " &8% " / G# ( #G # # % & 3 ( && " & G# ( && " & G# ( && " & "% " # " &F ( && " &8% " /# ( && "% " # &# "% " # . * # . " &8% " /1 % # " & # 1% E && " &8% " / % & 1% F &8% " / %" ( && %" & !% 3 " & 8 % " / F# "% " &F * F ( && " & F & - H (I1- 0 ; @ MOM & JMS, D. Donsez, 1998-2005 J "% " #* " # " & " & # ( && ( && " &8% " /1 % # & G# & %" & ( & & " & "% " F "% " #* " # " ( . * ( && " &8% " /1 % 1% F F # " & # 1% E J J#J . * " & # ( && " &8% " /1 % && " &8% " /1 % # 1% F G# & %" . * F " & "% " F " &8% " /1 % # " & # 1% E F # F F 73 03/03/2005 Exemple : Point à Point Sender # % "% " #* % % % % % #9 ! & " "## A " & 9 #$$#$ "#E # & " & # " & 7% # 7% # & # % % #G # & %" % % F "- B " K " & 7 % K # " & 7 % F "@ K 7% K# 7% F "; & K & 7 % K # & 7 % F "5 %& "/ K A "K # %& "/ F & & % F 7% # %&# MOM & JMS, D. Donsez, 1998-2005 J # "% " #* # % & " & #% CD #E " & % * C6 D % * C D F & # "G ; & % ; & % *C D F 2 + $$ "L 6 #E & % * C D= " @ % @ J & % * C D= " % * C D= " " #" F F J#J % *C D *% @ = " " #!% F %& "/ #E 74 03/03/2005 Exemple : Point à Point Receiver synchrone % & # % #9 "% " # %& "% " #* #+ % & " & # " & 7 # & # & 7% A "#G # % ! /& . F A "G !% % * "## A " & 9 "#E % % % #E % " " & K " & 7% K F / " " % "@ K 7% K F / " " % "- B " K & 7 % K & 7% F# / " %& "/ K A "K F % G 7% G G ; & "5 MOM & JMS, D. Donsez, 1998-2005 J "% " #* % 2 + M A % +%& J # /& . % " #E G# % % * % #E F % . % F J # "% " #* " . * /& . * F J#J % F % & " & #% CD #E * C6 D % * C D F * * F & " K# " & 7 % G K= " & 7 % F & " K# 7 % G K= 7% F " & " & K# & 7 % G K= & 7 % F 75 03/03/2005 Exemple : Point à Point Receiver asynchrone B% * % A B # & * % '% & % ; " & % # ! E % # % #E#9 "+%& % % # /; " & % # &" # % F#J J # % #9 "% " # %& "% " #* #+ % & " & # " & 7 # & # & 7% A "#G # % /& . * "## A " & A "G !% F % % % % % G % " " & K " & 7% 7% G % "@ K G ; & % "- B " K & "5 %& "/ K A "K F 9 "#E #E K F / " " 7% K F / " " 7% K & 7% F# / " J MOM & JMS, D. Donsez, 1998-2005 "% " #* 2 + J #% / & . . * " M A " #E#?N# # "% " #* " . * % /& . * F J#J * #E % ; " & "+ & #N?#J & 2 # /; " & % & " & #% CD #E * C6 D % * C D F % F F & " K# " & 7 % G K= " & 7 % F & " K# 7 % G K= 7% F " & " & K# & 7 % G K= & 7 % F 76 03/03/2005 Exemple : Publication Souscription La partie commune % "% " "% " "% " "% " " " " " #9 "#E #( & " A "# % & F # ( & & " & ##" ( && " # + #" + F #* # " " & ##" ( && " % & G #& 2 #4& " % ( & " A " F ( && " &8% " / G# ( && G# # % & 3 " ( & & " & G #" ( && " &8% & G #" ( && " & %" "% " # &F ( & & " & 8 % " / #" ( && "% " # & #" "% " # #" &8% " /1 % # " & ##" 1% E " & 8 % " / F# "% " &F F " &8% " / % & 3 " ( && " &8% " /1 % 1% F " / %" ( && " & F & !% & - H (I1- 0 ; @ F MOM & JMS, D. Donsez, 1998-2005 J "% " #* # " + " & #" ( && " &8% " /1 % " " ( && " &8% " /1 % #" 1% F " + G #" & %" + " F " ( & & " & "% " F # " & #" 1% E J "% " #* # " " & #" ( && " &8% " /1 % " " ( && " &8% " /1 % #" 1% F " #G #" & %" " F " ( & & " & "% " F J#J # " & #" 1% E " F F 03/03/2005 Exemple : Publication Souscription Publisher 9 # % "% " #* % % % % % " + #9 # % "# + "## A " & ! 9 " #$$#$ "#E + " & # " & 7% # 7% # & # % #G # & %" % % F "- B " K " & 7 % K # " & 7 % F "@ K 7% K# 7% F "; & K & 7 % K # & 7 % F "5 %& "/ K A "K # %& "/ F + + % F 7% # " " #!% %&# MOM & JMS, D. Donsez, 1998-2005 J # "% " #* # % & " & #% " + % * C6 D % * C D F & # "G ; & % ; & % *C 2 + $$ "L 6 #E + % * C D= " @ J + % * C D= " % * C D= " F J#J CD #E DF % " #" @ % *C D *% F @ = F %& "/ #E 77 78 03/03/2005 Exemple : Publication Souscription Subscriber synchrone ! % ! # % #9 /& "## A " & "% " # % & A "G !% F "% " #* #+ % & % % % % " & # " & 7% G % " " & K " & 7% # 7% G % "@ K & # & 7% G ; & % "- B " K & A "#G # % "5 %& "/ K A "K F ! 9 "#E #E K F / " " 7% K F / " " 7% K & 7% F# / " MOM & JMS, D. Donsez, 1998-2005 J "% " #* % 2 + M A % +%& J # /& % " #E G# % % #E % F % " % F F J # "% " #* " /& F J#J % & " & #% CD #E % * C6 D % * C D F F & " K# " & 7 % G K= " & 7 % F & " K# 7 % G K= 7% F " & " & K# & 7 % G K= & 7 % F 79 03/03/2005 Exemple : Publication Souscription Subscriber asynchrone * ! '% # % # /; " & # # & % % # ! & " #B% * % A B % #E#9 ! % "+%& ; " & % E % % % F#J J # % #9 "% " # %& "% " #* #+ % & " & # " & 7 # & # & 7% A "#G # % /& F A "G !% % % G 7% G G ; & "5 "## A " & 9 "#E % % % #E % " " & K " & 7% K F / " " % "@ K 7% K F / " " % "- B " K & 7 % K & 7% F# / " %& "/ K A "K F MOM & JMS, D. Donsez, 1998-2005 J "% " #* #% / & #E " " % ; " & & 2 # /; " & 2 + M A " #E#?N# "+ & #N?#J J # "% " #* % & " & #% CD #E " % * C6 D % * C D F % /& F F J#J F & " K# " & 7 % G K= " & 7 % F & " K# 7 % G K= 7% F " & " & K# & 7 % G K= & 7 % F 84 03/03/2005 Le Transactionnel dans JMS Motivation & & & ! # # & ! "" #1 # #1 % # & & F , # # " " " & & ! ! # " # % "" # ! ! P ! #1 )F4 * G & 0 Q # & " " MOM & JMS, D. Donsez, 1998-2005 API , , , , & " G G G , . G ; G ; G ; . , G 4! G 4! G 4! , . 85 03/03/2005 Modèle Requête-Réponse (i) Request-Reply Principe & " -, "% J$!& +++ " # & # " " # # # # ) ! " # 0& # " ! # ! # & ! # * Non explicitement supporter par JMS MOM & JMS, D. Donsez, 1998-2005 " F ,0 & & & & # # 0 & ! & # ! ): * "!# 1 # " 8+ 0 3 ! 0 & * ! & ! "!# 1 # " 8+ 0 * ! & "" 0 # & "! & && ! 86 03/03/2005 Modèle Requête-Réponse (ii) ! # 1 "!& # J) # F ,* ; %% && ## ** .. //!! ## %% // A ' ( ( & &"#"# & A ' ' .. ' "" * * #<#< ) MOM & JMS, D. Donsez, 1998-2005 ) .. ( ( & &"#5"#5 A ) / / ! ! #5#5 %% // A ) ; ! & ! # & ; ! !& W 87 03/03/2005 Modèle Requête-Réponse (ii) %% && ## ** .. //!! ## %% // ( ( & &"#"# ' MOM & JMS, D. Donsez, 1998-2005 .. "" 88 03/03/2005 Modèle Requête-Réponse (ii) ( ( & &"#"# %% && ## ** .. //!! ## %% // A ' MOM & JMS, D. Donsez, 1998-2005 .. "" A ' ' * * << 89 03/03/2005 Modèle Requête-Réponse (ii) %% && ## ** ( ( & &"#"# .. "" * * << MOM & JMS, D. Donsez, 1998-2005 ) ) ( ( & &"#5"#5 A ) .. / / ! ! #5#5 %% // A ) 90 03/03/2005 Modèle Requête-Réponse (iii) ! # 1 "!& # $) & # F ,* 4! %% && ## ** ( ( & &"#"# ++ Q && ## A %% // Q & &" " A MOM & JMS, D. Donsez, 1998-2005 ' ' ' * * #<#< * * PP " & X 1 ! %& # 0 ! ' * * OO 91 03/03/2005 Modèle Requête-Réponse (iii) 3 7 & 3 & "!& # & " #'& ! & 0 # - ! && & # & 3 ! 3 ! MOM & JMS, D. Donsez, 1998-2005 #1 + 0" 0 " 0 " # & ! &% !+ & ! % ! % !% " & 0 % && 92 03/03/2005 Les Destinations Temporaires %6 ! ! 0% ! & 0 # & # ! # ) !%* ! ' ! "" ! & ! " & ! & " #'& '( 0 - ) MOM & JMS, D. Donsez, 1998-2005 0% 1 %6 0% 1 0 # ! # 0 0 # 1 &% - '# ! & # ! )! ! !% 0 ! # ! # !% 94 03/03/2005 Ce que JMS n ’adresse pas En tant qu ’API Client, JMS n ’adresse pas #" R &% !M # # ! # F , # 0 8 0 # ! # " 4& 0 # !M # ! #1 F , 0" #1 ! # ! " & ! ) ! *# " & " & " # " '" + MOM & JMS, D. Donsez, 1998-2005 , F , !& & # " M& ! & 0# & &1 # " ! Extensions proposées par des éditeurs de MOM 4! # G 5 7 # 95 03/03/2005 Produits JMS Vendeurs Open Source ou Free F )= + < . %& * !((///+ %6 / %+ (6 " ! F , !(( ! 6" + F ,)! 2 &%+ ) && , < ", ( ,5 !((///+0 ! " + "* -F , + F ,* 8 !((///+6#%" + & G"& & !((///+ "& & MOM & JMS, D. Donsez, 1998-2005 ( + ( ! , 0/ , < , 0/ + , 03 # + ,! , 0 + )0 " & 4 & 5 #+* , )F ; , ! ,/ 0 ; C , 0/ ! * 96 03/03/2005 JMS dans J2EE Partie intégrante de J2EE/EJB MOM & JMS, D. Donsez, 1998-2005 F8 F4 F # G , - %6 #" 97 03/03/2005 Bibliographie Généralités P.A. Bernstein, E. Newcomer, «Principles of Transaction Processing for the Systems Professional», Ed. Morgan Kaufmann, 1997, ISBN 155860-415-4. $ ( 2 3) - 1 " ( , MOM & JMS, D. Donsez, 1998-2005 Patrick Th. Eugster, Pascal A. Felber, Rachid Guerraoui, Anne-Marie Kermarrec, The many faces of publish/subscribe, ACM Computing Surveys, Vol 35, No. 2, June 2003, pp. 114–131. Dave Chappell, Enterprise Service Bus, Pub O' Reilly, June 2004, ISBN 0-596-00675-6, 274 pages 98 03/03/2005 Bibliographie orienté Programmation MOM & JMS, D. Donsez, 1998-2005 Alan Dickman, « Designing Applications With Msmq : Message Queuing for Developers », (August 1998), Addison-Wesley Pub Co; ISBN: 0201325810 Neil Crane, « MSMQ From Scratch », 368 pages (December 7, 1999), Que Education & Training; ISBN: 0789721279 Rhys Lewis, « Advanced Messaging Applications with MSMQ and MQSeries », 1 edition (December 17, 1999), Que Education & Training; ISBN: 078972023X Nayan Ruparelia, « MQ Series Messaging », 400 pages (December 2000) Ed Manning Publications Company; ISBN: 1884777988 Alex Homer, David Sussman, « Professional MTS and MSMQ Programming with VB and ASP », Ed Wrox Press Inc, 512 pages (June 1998), ISBN: 1861001460; ( - 1 " ( , Scott Grant, Michael P. Kovacs, Meeraj Kunnumpurath, Silvano Maffeis, K. Scott Morrison, Gopalan Suresh Raj, Paul Giotta, « Professional JMS », March 2001, Wrox Press Inc; ISBN: 1861004931 Richard Monson-Haefel & David Chappell , Java Message Service, Oreilly, December 2000, ISBN 0-596-00068-5 99 03/03/2005 Bibliographie Autres Les spécifications JMS !((6 + + "(! # (6" Site du MOMA (MOM Association) !((///+" " - + Tutorial &1 P , "!& # ! 0 24 # Q # < ! & !((///+ , 6 ! + "(Y ! & (6 (6 Z &+ "& MOM & JMS, D. Donsez, 1998-2005 Benchmark !((///+ - + "(6 ( & ! + 0"W #[\DN