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 Didier.Donsez@imag.fr Didier.Donsez@ieee.org
http://www-adele.imag.fr/~donsez/cours Message Oriented Middleware (MOM) Didier DONSEZ Université Joseph Fourier (Grenoble 1) IMA IMAG/LSR/ADELE Didier.Donsez@imag.fr Didier.Donsez@ieee.org
3 Motivations Modèle Client-Serveur!"#$! %&'"#!( Une alternative : la messagerie inter-application &" )!#&!* #& +!#,-#-./#
Motivations 4 Applications (passage à très grande échelle) 00# 10")!* /2+++ -%/20&/+++,#"#!&) #%* )!!!& *$,)!,* 3 )45 40"5#* &&##)6./&&" #!7*!&" #&&#& &)7* +++
Principe 5 Messagerie inter-application 8"!& 1!! )% 9* Files de Messages (Message Queueing) &" "#0&# 1!)++#* # 1&& 1!!& # 10&!!&!!& #".& #" :&! Avantages %&!# )0&&&3 587* %&!!&#!%&)"!"*
Principe des Files de Messages (i) 6 1 1
Principe des Files de Messages (ii) 7 1 1
Principe des Files de Messages (iii) 8 2 2
Principe des Files de Messages (iv) 9 2 2
Modèles de messageries 10 Routage de Message!& 1##& 1!!&!&#"!!&""#0'&" : "" &'!!%&&&#"!#" Modèles ; " )!#*""!&& %&-,! "!%�:&! %&-,!!&)%#!%&-%%* "!%�:&!!!! #" ) 1<!=+,7* -! &-,
Modèle des Message Queues 11 1 1 2 1 2 2
Modèle Publication-Souscription 12 1 2 1 2
Publication-Souscription sur des topics hiérarchiques 13
Publication-Souscription par le contenu 14 1!" #!" 2 2 1 $"% " & " "$"% " & " #!"
Modèle Requête-Réponse 15 Implémente le modèle Client-Serveur #' * ) #' ( & ") # req res " # " & "
Modèles de messageries 16 Routage hiérarchiques de Messages :&>&&#&"#'"?#!%&#!.#.& 0#0/# "!& #1#&--- ) +++*---@" #1! + + + + + + + +,, " " # # && ## **,, " " # # && ## ** # # && ## **
Architecture d un MOM 17 Client MOM &#"'!": A#" Serveurs MOM & #"'!# "%&3 8& ##7 "#!#"!&)!"#* Administrateur/Contrôleur du MOM &&&0& #0&!& # #0&!&# )!#7*
18 Implémentation Architecture & & " & " & " & " & " & " & " - * % - * - * : QoS!%&.%& :&1&&,7
19 Architecture d un MOM -- #( #( &&" " -- #( #( &&" " -- ## * * %. " / 0 # % 1 "2 3 -- # # "" -- ## * * %. " /
Exemple multiplateforme d un MOM (IBM MQ-Series) 20 Hétérogénéité de Systèmes et de Réseaux (( &&" " (( &&" " (( &&" " ## * * 00 & & 11 4 # % & "2 3 ## * * 6666 45 45 # # $ $ 1 & "2 3 ## * * 77
Avantages 21 Réutilisation 4#1!& "%&%& Fiable Simple d Utilisation Répandu Supporté par de grands acteurs
Comparaison RPC et MOM 22
Interopérabilité entre MOM 23 Difficulté de faire intéropérer des MOM Pas de standardisation entre les MOM,!0; ;& ##&)!6 *!,0?4B47C!((///+%"+ Des pistes pour l interopérabilité = # ##&/ D+E ##&#" F$ F, F!":#&# 1(#" #"!&"#F,, F
24 Interopérabilité entre MOM -- #( #( &&" " -- #( #( &&" " -- #( #( &&" " -- ## * * %. " / 0 # % 1 "2 3 -- ## * * %. " / 0 # % 1 "2 3 -- ## * * %. " / -- # # ""! " # "$ % Issues : End-to-End Transactional delivery? --"+"+ -- # # ""
Le Transactionnel 25 La consommation et la production de messages peuvent être des actions recouvrables &0&#" #"" %& Elles ne sont effectives qu à la validation d une transaction &"!#:&&# # 1%##&&"!# %#&" "" #&0& La transaction peut être distribuée &)G 4,7*
26 Conséquences du Transactionnel Conception de Requête-Réponse transactionnel & 1#&&!#&! 0"# $ T1 T2 & #"% & & " "#"% & & #"% & * & "#"% & & #"% & * " # " & & "#"% & T3
27 Conséquences du Transactionnel 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
Acteurs et Produits 30 BEA Systems IBM - MQ Series $H!&0" MicroSoft - MSMQ (Message Queue Server) &&"84 Level 8 Systems - Falcom MQ!&&,;;, Sybase - DBQ #!, Tibco - TIB/RendezVous #&!&I Sun - Java Messaging Service!&;
31 IBM MQ/Series Leader du marché (66% du marché) Plates-formes @$E!&-0" H!& & )99%&F5(J7* Nombreux modules %&(,%%3 20&/+++
32 MSMQ (MicroSoft Message Queue) Plates-formes NT/2000 (v2) et XP (v3) G &)<!&&!*)D* 4!?44(?44," :&!!,)D* Modèles (v3) -4--4- %5 &-4" & ; 4 )#1"##1%6!*,K,;!99G,;!&
MSMQ (MicroSoft Message Queue) 33 Serveur (v2) L!#!"!&& 0"&!& )&*,!",&& 0"&)&0*,!2!,&& &% # #,,!,,;0",);,* 0&)&,;5,*!M&#" ) 4,* $<!0&)$*J4!)D* Client 3 #/3 N 7,K,;!99G,;!&
Exemple d ASP utilisant MSMQ et MTS! " #$ % & # ' & % (! ) * ) * ' ) # ) +!, # ),* ' ) - $ '. ) / ) +!,/ ) / ) ) 0 0 # %! + 1" $ 2 3 45! 1! 0 0 # 56 0 0 # 1 / % 5177##! 8! ' 9 8! " ' 5: 0 0 % 0 0 # 1$ 4; <= 6: %! + 1" $ 2 3 45! 1! 56: 12 > % 5" 0 5: 12 % 52 0 5: 1' + > % : 1? + + % : 1! 4 0 0 6: 0 0 1" 46: ),- $ '. ),* ) 0 $ " 46@ 1A 45 ) +! + > 156:B 0 $ 2 46@ 1A 45 ) 2 56: 1A 45! + > 156:B ) 35
JORAM (ObjectWeb & Scalagent) 36 MOM JMS );*%,%)4!* &-,!, :F8,!%&,<!#!&#%#&,< C2F!KC #"!# )&F G* Utilisation K&2)"#& *,#&)"#"#!* 7
JORAM (ObjectWeb & Scalagent) 37 Architecture Multi-Serveurs =#! 5. &% # )* 5!&)!:!* 4?44,,57 & &""&&#" #1# &%&#" #&&?#!%&) *,"O!&)F<!*(!, &),@E* 5.#&F,!%&#"O #&
JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs 38 Une destination par serveur ( ( 8 8 (( && ( ( 8 8 (( && ( ( 8 8 ( ( 8 8 (( && ( ( 8 8 ( #: # ; ;J 99 % % ## * * ;$ 99 % % ## * *
JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs 39 Equilibrage de charge ( ( 8 8 (( && ( ( 8 8 ( ( 8 8 (( && ( ( 8 8 ( #: # ; ;J 99 % % ## * * ;J! 99 % % ## * *
JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs 40 Haute disponibilité (1) ( ( 8 8 (( && ( ( 8 8 9 ;J 99 % % ## * * 99 % % % % * * # # * * % % ** ;J! 99 % % ## * * %% " "
JORAM (ObjectWeb & Scalagent) Architecture Multi-Serveurs 41 Haute disponibilité (2) ( ( 8 8 (( && ( ( 8 8 9 ;J 99 % % ## * * 99 % % % % * * # # * * % % ** ;J! 99 % % ## * * %% " "
42 MOM et BDs Nomades (Mobiles) Motivation 8"# 5#!+++ :6#!& "# & "#6& Réplication des BDs &&P %&!& Q Produits "3 #G&& #40#4&& +++
MOM et BDs Nomades (Mobiles) 43 1- Réplication 2- Synchronisation )* + )* + )* +, )* +, - - )* ) -./ & '( )* ) -./ & '(
44 MOM et BDs Nomades (Mobiles) 3- Détection de Collision 4- Reprise sur Erreur )* + )* + )* +, )* +, - - )* ) -./ & '( )* ) -./ & '(
45 MOM et Composants Motivations.&#""!&!# " R"##"#'&:"!)&!!* Modèles +84 S3 T&& F$(F )!#! #" *
http://www-adele.imag.fr/~donsez/cours Java Message Service (JMS) Didier DONSEZ Université Joseph Fourier (Grenoble 1) IMA IMAG/LSR/ADELE Didier.Donsez@imag.fr Didier.Donsez@ieee.org
47 Motivation Messaging Oriented Middleware " -!!& & 1&!#"!!& &"!#:#"##!!+++!#!"""!&&(, "#$%&' () javax.jmx API Java d un client à un serveur MOM #'&#" )** :)%++%*!#0&# 1#" %&-,!)%+*!#6& 1%!&!!!&#%
Architecture JMS 48 &&&&&#!2 javax.jmx!& 1&!#" &"!&F,,#10: 99 #( #( &&" " 99 #( #( &&" " 99 #( #( &&" " 11 && $9 $9 #( #( &&" " <# <# & & 99 %%* *% %## %% ## * * #9 #9 # #4 4 <#1 <#1 %%"* "* # #4#( 4#( ( ( = = = ( ( # <#9 <#9 ## * * # # ** % #. " <# <# %% & & ## * * # ##5 #5 33 % # /. " /
Modèle Point à Point Point-to-Point 49 Concept de Queue =)!&* )*" :,)++0&# 1#" * =& A)***&" #&, && %% & & ## * * && && %% # #.. * *
Modèle Publication-Souscription Publish-Subscribe 50 Concept de Topic (centre d intérêt) =)!&*" :- 4&#-A&" + + %% & & ## * * + + + +
API JMS 51 Superclasses communes a PTP et PubSub 9 # % & " > # > #?.*" "" / '( * " 0 0 0 /$*+) "*"* + 1 0 1 2.$ )* $"") + 3 " ) 4 0.**$)* $"")
Fonctionnement d un client typique JMS 52 Phase d initialisation (setup) &1%6!F8 )!&*%6*!F8 F, )!&*0 & F, &)*+ 1 (+ &0 &)&** #"#:& ##"&&# " Phase de consommation/production de messages #" & #" &
Les objets administrés par le Provider 53 Les objets administrés par le Provider 5!# 1': %&!F8!& 1#"# 5 * 5 #"!& %&!F8!& 1#"# Les objets 5!&&&4(&#F, 0&&!0#0#& &0 0& + *!!)!&*&1/ & 5 0!&&&4(&#F,
54 Rôle!&&&4(&#F, 0&&!0#0#& Cycle de vie &(! &0 + 1 &+ + 0& + *!!)!&*&1/ & #"!%!'#:&&#+!!% "!&&#+ 100!& 1!!% 0"!% &%#
55 0 Rôle "-# 0%&+ 1 &+ 0%&#"! * #0&"##" )""!#* #!0!* +#1#* && 1 #+ & "# +!% #0O#" &!#0!!% -!% "#"
+ 58 représente l objet consommateur des messages 0%!&0 5 3 0 3! "0 0 % 5 0 0 0! "0 0 " % "&!!&+ 0!""*,-0 3 " 0 Réception Synchrone des messages &&"#!" 5 +!%"+! %"+ ( 6!% Réception Asynchrone des messages &&%6"!&"& 10+ &!%6:& 1#" 5 + &!+ & %7+ & + &!% #" &"# +!+ %#& 1%6 + & 5 1&1&#! &&"& + &
59 + 1 représente l objet producteur des messages 0%!&0 5 0 0 0! % 5 1 2 0 1 2! % "&!!&+ 1 0!""*,-0 0 " 1 2 Production des messages 5 0!+ % 5 1 2 2!+ %
Le modèle Point à Point Point-To-Point PTP 60 Classes et interface 9 # % & " > # * " 0 0 + 1 0 + 3.. ) 4 "!&!! ""F,!0!""&!#!&""& 3 #+ 5" &#&& 1##! 1!&&& 1##!# 5 ) 4!"#&&" #& & &")"#/ /!%*
Le modèle Publication-Souscription Publish-Subscribe PubSub 61 Classes et interface 9 # % & " > #? * 0 0 + 1 1 2 + 0 " &"P!%&Q!#:P!#Q &"P Q!#:P ""Q
Le modèle de Messages JMS L interface 3+ C 131 62 Motivation #'&"":&!#,!!&1 U#&)F,&!&-0"+++*,!!&%6F&#"G 5 L interface 3+ C 131-0- > < <$ 2 3 <! < C Structure d un Message )* "!"" #)#*%& # & 1#0#"!)* "!!!&"!!##& "!# 1!&!!!0)!#*!#!!!!&!!&&# 1&#!!)* &#!!&
Le modèle de Messages JMS Les champs d entête 63 Nom des champs d entête 8 + 0 * 9 8 + 0 * + 9: ( ; ( < 1 / 3 0 0 / ( 9# 1 / 3 0 0 / ( 9 = 8 + 0 / 9 > &! & % 2 8 + 0 + * 9 # + # 8 + 0 9 2 8 + 0 * 9 # = +!3 73 % 8 + 0 3 9 # * 8 + 0 9 # + 3 8 + 0 3 9 =! % 8 + 0 1 9!? > @ % Consultation/Modification "#AAA!%7AAA!% VAAA &"#"!# 1
Le modèle de Messages JMS Les champs de propriétés 64 Nom des propriétés!!## "!0!8 + 0 A!#:#"!# 1!& 9 < 4@ #9 < 4@ 9 = = 9 < 4@ #9 < 9 9 < <4@ #9 <( & <4@ 9 # 9 <. * "% 9 9 < "% " 9B!4 %"C! %"D! %"E! % 9 <@ * / ( & " 9 2 #!!!0 "!0!8 + 0 < F (!!!!& 0& ""#"!&"! "!&&## 1!# 1#"G 5&!0 +
Le modèle de Messages JMS Les champs de propriétés 65 Enumération des propriétés / 1 (!%7/ + * 8 + 0 A1 (!% /!0 % Valeur des propriétés 0 D 4(! E 6 0 C 0 4! " "2 " " "# " "0 "# 1!0 " %" ) 1!0 " %" "# 1!0 %" ) 1!0 %" 5 1!!&:AAA1!% &!! 1! 5!!# 1" A&& & 1!+ ( 6 / & 4!%6!#) ") "0 2 " "& " "* "0 "# ; 1!0 "; % "#; ; 1!0 % &#!! 1!%
Le modèle de Messages JMS Le corps (body) du message 66 Sous interfaces de + + 0!#"G 5",7 "& # " A "?# " A " "& # + + "%&#!"-& & "# "4& " "& #& % #?# "4& " "& #& % #& " * % # - B "# "- B " "&?# "- B " "& - B "# & % " & # " % 1 % ; + %6F&- B "# "- B "?# "- B "- B "# ) + %&# )!* & "# % 4& "?2 " 4& "& "##& "# % 5 / " 5 / " CD?2 " 5 / " 5 / " CD - B "# % - B "?#2 " - B "- B "# " 0 + 0&##)' * * 1&&&" & "# % 4& "?2 " 4& "& "## "& # % "&?2 " "& "& - B "# % - B "?#2 " - B "- B "# "
Remarque: Message SOAP sur JMS 67 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."
Le modèle de Messages JMS Le corps (body) du message 68 Méthodes &"# )!% &&! Remarque &!# 1" A&&
Le modèle de Messages JMS Le corps (body) du message 69 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.setdouble("salary", 10000.0); mapmsg.setlong("age", 38); 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.writelong(38); streammsg.writefloat(10000.0);
Le modèle de Messages JMS Le corps (body) du message 70 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); 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);
Le modèle de Messages JMS La sélection (filtrage) des messages 71 Motivation &+ 1 &" :&!! &+!0&&" A & 1!#&!0:&0%#+ &" A 0& 1!#& Expressions de sélection -"%&#,;5-N$ #0& )O8" 3 G / 7'& 0 /* ; 3 "'( * "( ; "!% H "I "H J"I J"I H "J")/ 6 / / ( "& K / "( "0 L( ; M( G & & "!& 0 JN8 + 0 JO O'( *! JO O ; 3 JOO %'( * 0 ( ; ( G & & NP 3 J 3! " %P
Exemple : Point à Point La partie commune 72 % #9 "#E "% " #( & " A "# % & F "% " # ( & & " & 8 % " / # ( & & " & 8 % " / F# "% " # F "% " # ( & & " & # ( & & " & F "% " # & # & F "% " # & # & F "% " #. * #. * F "% " #* # " "& # ( & & " & 8 % " / 1 % # "& # 1 % E % & G #& 2 #4& "% ( & " A "F ( & & " & 8 % " / G # ( & & " & 8 % " / % & 3 ( & & " & 8 % " / 1 % F #G # # % & 3 1 % F ( & & " & G # ( & & " & 8 % " / % " ( & & " & F & G # ( & & " & % " &!% & - H ( I 1-0 ; @ F J "% " #* # " & "& # ( & & " & 8 % " / 1 % # "& # 1 % E " ( & & " & 8 % " / 1 % # 1 % F & G # & % " & F ( & & " & "% "F J "% " #* # ". * "& # ( & & " & 8 % " / 1 % # "& # 1 % E " ( & & " & 8 % " / 1 % # 1 % F. * G # & % ". * F ( & & " & "% "F J#J
Exemple : Point à Point Sender 73! "#$$#$ # % #9 & "## A " & 9 "#E "% " #* # & "& # "& 7 % # 7 % # & # 7 % # % & # % & "/ #E % % % #G # & % " % % F % "- B "K "& 7 % K # "& 7 % F % "@ K 7 % K # 7 % F % "; & K & 7 % K # & 7 % F % "5 % & "/ K A "K # % & "/ F & & % F J # "% " #* # % & "& #% CD#E " & % * C6 D% * C DF & # "G ; & % ; & % * C DF 2 + $$ "L 6 #E & % * C D= "@ % @ % * C D* % @ = " "#!% F J & % * C D= "% * C D= " "#" F F J#J
Exemple : Point à Point Receiver synchrone 74 %&! # % #9 / &. * "## A " & 9 "#E "% " # % & A "G!% F "% " #* #+ % & % % % % #E "& # "& 7 % G % " "& K "& 7 % K F / " " & "K # "& 7 % G K = "& 7 % F # 7 % G % "@ K 7 % K F / " " & "K # 7 % G K = 7 % F & # & 7 % G ; & % "- B "K & 7 % K & 7 % F# / " " & "& K # & 7 % G K = & 7 % F A "#G # % "5 % & "/ K A "K F J "% " #* # / &. * #E % % % F 2 + M A "#E % G # % %. * * F + % & % % F J J # "% " #* % & "& #% CD#E ". * % * C6 D% * C DF / &. * F F J#J
Exemple : Point à Point Receiver asynchrone 75 '%&! # % # / ; " & # & " # B% * % A B % ; " & E * # & % % # % #E#9 "+ % & % % % % F#J J # % #9 / &. * "## A " & 9 "#E "% " # % & A "G!% F "% " #* #+ % & % % % % #E "& # "& 7 % G % " "& K "& 7 % K F / " " & "K # "& 7 % G K = "& 7 % F # 7 % G % "@ K 7 % K F / " " & "K # 7 % G K = 7 % F & # & 7 % G ; & % "- B "K & 7 % K & 7 % F# / " " & "& K # & 7 % G K = & 7 % F A "#G # % "5 % & "/ K A "K F J "% " #* #% / &. * #E. * " % ; " & & 2 # / ; " & F 2 + M A "#E#?N# "+ & #N?#J J # "% " #* % & "& #% CD#E ". * % * C6 D% * C DF % / &. * F F J#J
Exemple : Publication Souscription La partie commune 76 % #9 "#E "% " #( & " A "# % & F "% " # ( & & " & 8 % " / #" ( & & " & 8 % " / F# "% " " F "% " # ( & & " & ##" ( & & " & F "% " # & #" & F "% " # + #" + F "% " # #" F "% " #* # " "& ##" ( & & " & 8 % " / 1 % # "& ##" 1 % E % & G #& 2 #4& "% ( & " A "F " ( & & " & 8 % " / G # ( & & " & 8 % " / % & 3 " ( & & " & 8 % " / 1 % F " G # # % & 3 " 1 % F " ( & & " & G #" ( & & " & 8 % " / % " ( & & " & F " & G #" ( & & " & % " &!% & - H ( I 1-0 ; @ F J "% " #* # " + "& #" ( & & " & 8 % " / 1 % # "& #" 1 % E " " ( & & " & 8 % " / 1 % #" 1 % F " + G #" & % " + " F " ( & & " & "% "F J "% " #* # " "& #" ( & & " & 8 % " / 1 % # "& #" 1 % E " " ( & & " & 8 % " / 1 % #" 1 % F " #G #" & % " " F " ( & & " & "% "F J#J
Exemple : Publication Souscription Publisher 77 9 + "#!"#$$#$ # % #9 + "## A " & 9 "#E "% " #* # + "& # "& 7 % # 7 % # & # 7 % # % & # % & "/ #E % % % #G # & % " % % F % "- B "K "& 7 % K # "& 7 % F % "@ K 7 % K # 7 % F % "; & K & 7 % K # & 7 % F % "5 % & "/ K A "K # % & "/ F " + + % F J # "% " #* # % & "& #% CD#E " + % * C6 D% * C DF & # "G ; & % ; & % * C DF 2 + $$ "L 6 #E + % * C D= "@ % @ % * C D* % @ = " "#!% F J + % * C D= "% * C D= " "#" F F J#J
Exemple : Publication Souscription Subscriber synchrone 78!%!! # % #9 / & "## A " & 9 "#E "% " # % & A "G!% F "% " #* #+ % & % % % % #E "& # "& 7 % G % " "& K "& 7 % K F / " " & "K # "& 7 % G K = "& 7 % F # 7 % G % "@ K 7 % K F / " " & "K # 7 % G K = 7 % F & # & 7 % G ; & % "- B "K & 7 % K & 7 % F# / " " & "& K # & 7 % G K = & 7 % F A "#G # % "5 % & "/ K A "K F J "% " #* # / & #E % % % F 2 + M A "#E % G # % % " F + % & % % F J J # "% " #* % & "& #% CD#E " % * C6 D% * C DF / & F F J#J
Exemple : Publication Souscription Subscriber asynchrone 79!'%!! # % # / ; " & # & " #B% * % A B % ; " & E * # & % % # % #E#9 "+ % & % % % % F#J J # % #9 / & "## A " & 9 "#E "% " # % & A "G!% F "% " #* #+ % & % % % % #E "& # "& 7 % G % " "& K "& 7 % K F / " " & "K # "& 7 % G K = "& 7 % F # 7 % G % "@ K 7 % K F / " " & "K # 7 % G K = 7 % F & # & 7 % G ; & % "- B "K & 7 % K & 7 % F# / " " & "& K # & 7 % G K = & 7 % F A "#G # % "5 % & "/ K A "K F J "% " #* #% / & #E " " % ; " & & 2 # / ; " & F 2 + M A "#E#?N# "+ & #N?#J J # "% " #* % & "& #% CD#E " % * C6 D% * C DF % / & F F J#J
Le Transactionnel dans JMS 84 Motivation &&!#""#" # 1 &#&!# 1#%)F4* #""#G # 1%#&"!! &F,## &&P &0 Q ""!!!#&"" API,,&,, " G. G;. G4!. G G; G4! G, G;, G4!,
Modèle Requête-Réponse (i) Request-Reply 85 Principe &-,"# ""% &#-! J- " ##" #! $- " ##0&#" #!#&!#!&)* +++ Non explicitement supporter par JMS "F,0#0&!& &# # "!&! &!):* &"!#1#" 8 + 0 3!0&*!&! &"!# 1#" 8 + 0 *!&""0#& &&
Modèle Requête-Réponse (ii) 86!# 1"!& #J)&;#F,* (( &&"# "# A' ' ) A) %% & & ## * *.. / /!!# # % % / / (( &&"#5 "#5.. / /!!#5 #5 % % / / A'.. "" ' * * #< #< ;!&! #&;!!& W ) A)
Modèle Requête-Réponse (ii) 87 ( ( & & "# "# ' %% & & ## * *.. / /!!# # % % / /.. ""
Modèle Requête-Réponse (ii) 88 ( ( & & "# "# A' %% & & ## * *.. / /!!# # % % / / A'.. "" ' * * <
Modèle Requête-Réponse (ii) 89 %% & & ## * * ( ( & & "# "# ) A) (( &&"#5 "#5.. / /!!#5 #5 % % / /.. "" * * < ) A)
Modèle Requête-Réponse (iii) 90!# 1"!&#$)&4!#F,* %% & & ## * * (( &&"# "# + + Q A % % / / && # # &&"" ' A Q * * #< #< " ' ' ' &X 1!%& #0! * * P * * O
Modèle Requête-Réponse (iii) 91 3 7 3 && "!&#&"#'&#-! &0!&& &# & 3! 0 " % 3! 0 " % # 1#&! +!+ % 0"!&%&!% " &0!&&
Les Destinations Temporaires 92 %6!! 0%!&0 #&## 1 '#!&!#)!%*!'!&%#!""!&!"&!&"#'&-!)!! '(0-) 0# 0%! 0!% 1 # %60# 0%! 0!% 1 #
Ce que JMS n adresse pas 94 En tant qu API Client, JMS n adresse pas #"#!# R&% # 4&!M#!#" F,0!#!M#0")!*#" & # #0 80# 1# 1"!#! &#" '" F,"&!" +, F,M&!&0#&& 1 #" &#!!&" Extensions proposées par des éditeurs de MOM 4!#G 5 7
95 Produits JMS Open Source ou Free F )=+<%&*!((///+%6/%+ (6"!F,!((!6"+ &%+ ( F,)!2 F,*!((///+6#%"+ G"&&!((///+ "&&+ ( Vendeurs.(,5 )!((///+0+"* &&!- F,,"+ <", 8 &!,0/,<,0/+,03 #+,!,0+)0"& 4& 5#+*,)F ;*,!,/0; C,0/!
96 JMS dans J2EE Partie intégrante de J2EE/EJB F8#%6#" F4G, F -
Bibliographie Généralités 97 P.A. Bernstein, E. Newcomer, «Principles of Transaction Processing for the Systems Professional», Ed. Morgan Kaufmann, 1997, ISBN 1-55860-415-4. (-1"(, $23) 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
Bibliographie orienté Programmation 98 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
Bibliographie Autres 99 Les spécifications JMS!((6++"(!#(6" Site du MOMA (MOM Association)!((///+""-+ Tutorial & 1 "!&#!0 P,24#Q#<!&,6!((///+!+"(Y!&(6(6Z&+"& Benchmark!((///+-+"(6(&!+0"W#[\DN