Académique Documents
Professionnel Documents
Culture Documents
SysRpJMS
A. Schiper
Et 2007 1
Introduction
JMS = Java Messaging Service JMS est une API Java propose par Sun, permettant aux applications rparties de crer, envoyer, recevoir et lire des messages premire specification publie en 1998 un fournisseur JMS (JMS provider) est un systme qui implmente les interfaces JMS (et offre des outils d'administration)
Remarque: JMS permet un couplage faible entre entits rparties (les diffrentes entits n'ont pas besoin d'tre actives simultanment) Par comparaison RMI, CORBA: couplage fort entre entits rparties (les diffrentes entits doivent tre actives simultanment)
SysRpJMS A. Schiper Et 2007 2
Rfrences
R. Monson-Haefel, D.A. Chappell Java Message Service O'Reilly, 2001 P. Giotta et al. Professional JMS Programming Wrox Press, 2000 http://java.sun.com/products/jms/tutorial/
SysRpJMS
A. Schiper
Et 2007 3
point--point
metteur
envoie msg
queue
site 1
site 2
1: souscrit
site 3
souscripteur site 3
pub/sub
publisher
2: publie msg
sujet
site 1
SysRpJMS A. Schiper
site 2
SysRpJMS
A. Schiper
Et 2007 5
SysRpJMS
A. Schiper
Et 2007 6
SysRpJMS
A. Schiper
Et 2007 7
Pub/sub
le "publisher" adresse son message un sujet un souscripteur souscrit un sujet un message peut tre reu par de multiples destinataires (les diffrents souscripteurs) un souscripteur qui souscrit l'instant t ne reoit que les messages publis aprs t. Par ailleurs, le souscripteur doit rester actif pour continuer recevoir les messages publis. souscription durable: permet au souscripteur de recevoir les messages publis pendant les priodes ou le souscripteur n'est pas actif les messages peuvent tre persistants ou non persistants (seul un message persistant survit la dfaillance du serveur qui gre le sujet) NB La durabilit est une proprit lie au souscripteur, alors que la persistance est une proprit lie au serveur qui gre le sujet
A. Schiper Et 2007 8
SysRpJMS
Rception de messages
La rception de messages peut tre synchrone ou asynchrone: rception synchrone: le destinataire (modle PTP) ou le souscripteur (modle pub/sub) appelle la mthode receive. L'appel est bloquant jusqu' ce qu'un message soit obtenu. Il est possible de spcifier un timeout. rception asynchrone: le destinataire (PTP) ou le souscripteur peut enregistrer un message listener, qui est un objet contenant une mthode onMessage. Cette mthode est appele lors de la rception d'un message.
SysRpJMS
A. Schiper
Et 2007 9
point--point
publie serveur souscrit client JMS JMS reoit sujet + messages souscripteur
A. Schiper
pub/sub
Et 2007 10
Messages persistants
Les messages persistants (PTP ou pub/sub) sont conservs par le serveur JMS sur disque. Les messages survivent ainsi une dfaillance du serveur JMS.
Dans le cas de messages persistants, le protocole entre client JMS et serveur JMS inclus un message dacquittement (cf slides suivants)
SysRpJMS
A. Schiper
Et 2007 11
SysRpJMS
A. Schiper
Et 2007 12
SysRpJMS
A. Schiper
Et 2007 13
En mode AUTO_ACKNOWLEDGE, les ACKs sont envoys automatiquement, soit la fin de la mthode receive() (rception synchrone), soit la fin de la mthode onMessage() (rception asynchrone) Le rcepteur peut galement contrler manuellement l'envoi du ACK. Pour cela il doit utiliser le mode CLIENT_ACKNOWLEDGE. Le ACK est envoy en appelant la mthode message.acknowledge().
SysRpJMS
A. Schiper
Et 2007 14
SysRpJMS
A. Schiper
Et 2007 15
SysRpJMS
A. Schiper
Et 2007 16
Transactions JMS
Une transaction JMS permet de grouper l'envoi de plusieurs messages ou la rception de plusieurs messages. Exemple d'envoi transactionnel: un client JMS envoie m1 et m2, mais ne souhaite pas qu'en cas de dfaillance (du client) seul m1 soit reu par un serveur JMS. Exemple de rception transactionnelle: Un client JMS souhaite recevoir deux messages m1 et m2, et ne souhaite pas qu'en cas de dfaillance (du client) seul m1 ait t reu et trait.
SysRpJMS A. Schiper Et 2007 17
Les messages sont gards par le serveur JMS; ils ne sont pas dlivrs un client JMS tant que commit() n'a pas t invoqu. Si le client JMS invoque rollback() (au lieu de commit()), les messages sont dtruits.
SysRpJMS A. Schiper Et 2007 18
client JMS
client JMS
Les messages envoys au client JMS sont gards par le serveur JMS; ils sont dtruits uniquement lorsque le client invoque commit(). Si le client invoque rollback() (au lieu de commit()), les messages ne sont pas dtruits par le serveur JMS.
SysRpJMS
A. Schiper
Et 2007 19
Exemple 3
client JMS
serveur JMS
client JMS
SysRpJMS
A. Schiper
Et 2007 20