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