ENSI –SAR
II2-RSR/SLE
Chapitre 4
MOM: Message Oriented Middleware
PLAN
1.
Introduction : Motivations et principe
2. Modèles de messagerie
3. Architecture
4.
JMS : Java Message Service
5. Exemples de MOM : IBM MQSeries, MSMQ,
JORAM
6. Conclusion : avantages
SR&A --CORBA
2
Motivations
Le modèle client-serveur ne répond pas à tous les besoins
Le schéma de base est synchrone La communication est essentiellement 1 vers 1 (ou n vers 1) Les entités (clients, serveurs) sont désignées explicitement L’organisation de l’application est peu dynamique
Les événements et bus à messages fournissent un modèle
adapté à des besoins particuliers Communication asynchrone Communication possible n vers p Possibilité de désignation non explicite des entités Organisation dynamique des applications (facilité d’évolution,
adjonction et retrait d’entités participantes)
ENSI
Systèmes et applications répartis
3
Objectifs des MOM
On souhaite
Asynchronisme: ne pas être bloqué pendant une communication,
Ne pas connaître toujours au préalable ceux avec qui on communique
Intégration de modules hétérogènes distribués
Fiabilité de la délivrance des messages
Indépendance des canaux de communication / applications
Couplage faible assuré
Les canaux de communications sont indépendants des applications – Référence aux canaux plutôt qu’aux adresses de machines
SAR --MOM & JMS
4
Principe
Messagerie inter-application
Asynchrone Non temps réel
Files de Messages (Message Queueing)
Les messages sont mis dans une file d ’attente persistante (i.e. sur disque)
avant d’être relayés vers l ’application
Partage d’une file par plusieurs applications Priorité des messages Filtrage des messages à la réception
Avantages
Insensible aux partitions de réseaux (sans fil, satellite, WLAN, …) Insensible aux applications non disponibles (temporairement)
ENSI
Systèmes et applications répartis
5
Exemple : administration d’un réseau (surveillance des équipements)
Problème
Surveillance de l’état de machines, systèmes et applications dans un environnement distribué
Flot permanent de données en provenance de sources
diverses sur le réseau
Modification permanente possible (ajout, suppression,
déplacement des équipements)
Possibilité d’accès des administrateurs depuis n’importe
quel poste de travail
ENSI
Systèmes et applications répartis
6
Solution Client-Serveur
ENSI
Systèmes et applications répartis
7
Solution bus à messages
ENSI
Systèmes et applications répartis
8
Solution bus à messages
Propriétés caractéristiques
Les différents éléments administrés émettent des messages
déclenchés par des événements horloge (surveillance périodique) changement d’état ou de configuration alertes
Un ou plusieurs processus cycliques (démons) reçoivent ces notifications et maintiennent l’état courant du système
suivi des changements de configuration dynamiques émission de messages signalant les changements d’état et les mises à
jour
statistiques, journal de fonctionnement
ENSI
Systèmes et applications répartis
9
Paradigme MOM (1)
Communication inter-applications réparties utilisant les messages
quelconques : aucune hypothèse sur le contenu de messages
Emetteur (Producteur)
Récepteur (consommateur)
message
Destination
• Emetteur et récepteur connaissent
seulement la destination.
• Plusieurs émetteurs et récepteurs sur
la même destination
• Persistance du message (reçu ou non
reçu)
• Format du message libre • Acheminement par un bus de
messages
SAR --MOM & JMS 10
Paradigme de MOM (2)
Messages stockés dans une file d’attente de messages (message queues).
Principe de store and forward
Communication asynchrone
Excellent pour l‘intégration d‘applications.
SAR --MOM & JMS
11
Paradigme de MOM (3)
MOM garantit la livraison des messages en utilisant un système
de FA persistante et fiable.
Le traitement des messages se fait grâce au serveur de
messages (messages server)
Filtrage possible
lors d’une
lecture
(consultation par
browse), transformation, logging, …
Réseaux de serveurs de messages
MOM utilise aussi des services de nommage, de sécurité et de
gestion.
SAR --MOM & JMS
12
Communication par messages
Principes directeurs
Communication asynchrone Désignation du destinataire
directe indirecte (via porte, file de messages)
Structuration des messages
messages éventuellement typés
Interface de programmation
primitives de base : envoyer - recevoir (send, receive) extensions : groupes, désignation associative
Mise en œuvre, outils
interface socket sur niveau de transport, IP multicast outils de développement encore peu évolués
ENSI
Systèmes et applications répartis
13
Communication par messages : extensions
Communication de groupe
groupe = ensemble de destinataires désignés par nom unique gestion dynamique (arrivée - départ ou défaillance de membres) problème (difficile !) : maintien de la cohérence (vue cohérente de la composition du
groupe, ordre causal de réception, etc.)
utilité : tolérance aux fautes, travail coopératif
Communication anonyme
les destinataires d’un message sont identifiés par leurs propriétés, non par leur nom propriétés
définies par un attribut du message (filtrage)
– chaque application consommatrice définit un critère sur les messages à
consommer
» le critère peut être une expression booléenne sur les valeurs de champs
du message.
définies de manière externe
indépendance entre émetteurs et récepteurs
ENSI
Systèmes et applications répartis
14
Modèles de messagerie
Message Queue
un message envoyé (produit) est consommé par un seul client
Publication-Souscription
un message publié est diffusé à tous les souscripteurs Publication-Souscription par le contenu (content based publish-
subscribe)
un message publié est diffusé à tous les souscripteurs par rapport au
contenu du message (IBM’ Gryphon, U. Colorado’ Siena, …)
Requête-Réponse
Client-Serveur asynchrone
ENSI
Systèmes et applications répartis
15
Modèle des Messages Queues
• Messages
– identification unique – typés ou non – persistants ou non – délivrés avec ou sans accusé de
réception
• Queues de messages – identification unique – partagées par les applications – persistantes – ordre spécifié (total, causal, selon
priorité, etc.)
ENSI
Systèmes et applications répartis
16
Modèle Publication-Souscription
ENSI
Systèmes et applications répartis
17
Publication-Souscription par le contenu
ENSI
Systèmes et applications répartis
18
Modèle Requête-Réponse
ENSI
Systèmes et applications répartis
19
Modèle de programmation : mode pull
Réception explicite des messages (retrait ou pull)
Publicité
Les clients viennent périodiquement prendre leurs messages dans une
boîte aux lettres
Le consommateur n’est pas nécessairement bloqué en l’absence de
message
Les news d’internet, ou le forum de jfod …
Enregistrement d’un « client » à un sujet de discussion, Un des « clients » décide de poster un message, Les utilisateurs à leur initiative vont chercher l’information, Publish-subscribe, mode pull
ENSI
Systèmes et applications répartis
20
Modèle de programmation: mode push
Réception des messages de manière implicite
Abonnement préalable du destinataire au service (on peut
filtrer les messages par leurs attributs)
Lors du dépôt d’un message, chaque destinataire est/sont
informé(s) et exécute une réaction prédéfinie (comportant la lecture du message)
C’est en fait un modèle “événement-réaction”
Les listes de diffusion, logiciels de causerie, (« chat »)
Abonnement d’un « client » à une liste de diffusion, Un des « clients » décide de poster un message, Tous les abonnés reçoivent ce message,
ENSI
Systèmes et applications répartis
21
Architecture d ’un MOM
Client MOM
relié de manière permanente à un serveur MOM envoie et reçoit des messages
Serveurs MOM
reliés entre eux de manière épisodique
réseau mobile, réseau WAN sur lignes dédiées, …
maintiennent des copies des messages
réplication (serveurs primaires, serveurs secondaires)
Administrateur/Contrôleur du MOM
crée et surveille les files définit la topologie des interconnexions entre serveurs définit la politique de connexion (période, …)
ENSI
Systèmes et applications répartis
22
Architecture d ’un MOM
ENSI
Systèmes et applications répartis
23
Implémentation
Architecture
Centralisée : Spoke and Hub Distribuée : Bus
Pair à Pair : Snowflake
QoS
Disponibilité, Fiabilité, Passage à
l’échelle, Sécurité, …
ENSI
Systèmes et applications répartis
24
Interopérabilité entre MOM
Difficulté de faire intéropérer des MOM Pas de standardisation entre les MOM
Spécification BMQ : Business Messaging Quality
initiative de Candle (projet ROMA) encouragée par IBM, MicroSoft,
HP, AT&T, … Voir http://www.bqm.org
Des pistes pour l ’interopérabilité
Une autorité : MOMA
Message Oriented Middleware Association
CORBA 3.0
introduction de la notion de messages asynchrones
J2EE
JMS javax.jms API Java permettant à des clients d ’envoyer/recevoir des messages avec des serveurs implémentant des JMS SPI EJB : Message Driven Bean
SAR--CORBA
26
Comparaison RPC et MOM
caractéristique
Métaphore
MOM
Courier
Relation temporelle entre client et serveur
Asynchrone
RPC
Téléphone (sans répondeur)
Synchrone
Nature du dialogue
File d’attente
Requête-Réponse
Etat opérationnel du serveur
Pas nécessaire
Obligatoire
Filtrage des messages
Possible
Non
Performances
Lent en cas de sécurisation des messages par écriture sur disque
Plus efficace que MOM car pas de sauvegarde
SAR--CORBA
27
Acteurs et Produits
BEA Systems IBM - MQ Series 25 plateformes
MicroSoft - MSMQ (Message Queue Server)
essentiellement NT
Level 8 Systems - Falcom MQ
passerelle vers MSMQ et MQ Series
Sybase - DBQ
Adaptive Serveur Tibco - TIB/RendezVous
accord avec Oracle pour Oracle 8
Sun - Java Messaging Service
API pour les MQ
ENSI
Systèmes et applications répartis
28
Domaines d’Application des MOM
Diffusion d ’information (push)
news, stock quote, ...
Messagerie inter-bancaire, workflow, ERP, ...
Synchronisation de BD nomades et réplicat asynchrone (hot standby)
EAI (Enterprise Application Integration), B2B
ESB (Enterprise Service Bus)
Data Warehouse (ETL : Extract Transform Load)
Collecte des données (journaux Firewall, mesures réseaux de capteurs, …)
Déploiement grande échelle de logiciels (antivirus, …)
…
SAR --MOM & JMS
29
Systèmes asynchrones : technologies alternatives
Web asynchrone
HTTP asynchrone (‘one way’)
Requête sans réponse
Mêmes propriétés que HTTP (fiabilité, sécurité, etc.)
CORBA
Corba Notification Service
Communication asynchrone en Java
JAXM
JINI
JMS
SAR --MOM & JMS
30
MOM
Java Message Service : JMS
ENSI
Systèmes et applications répartis
31
L’interface Java Message Service (JMS)
API Java d’accès uniforme aux systèmes de messagerie d’entreprise
ENSI
Systèmes et applications répartis
32
JMS
Java Message Service fait partie de la suite Java EE de Sun, qui fournit un ensemble de standards d’APIs que les développeurs peuvent utiliser pour accéder aux caractéristiques de n’importe quel système de messagerie.
Il supporte les modèles Publish/Subscribe et Point-to-Point (Message
Queuing).
ENSI
Systèmes et applications répartis
33
MOMs compatibles avec JMS
ActiveMQ de Apache OpenJMS de The OpenJMS Group JBoss Messaging de JBoss JORAM de Objectweb Weblogic de BEA Oracle AQ SAP NetWeaver WebAS Java JMS de SAP AG SonicMQ de Progress Software Sun Java System Message Queue TIBCO Software webMethods Broker Server de webMethods WebSphere Application Server d’IBM WebSphere MQ d’IBM (appelé précédemment MQSeries)
SAR--CORBA
34
JMS : Modèles de communication
Publish-Subscribe : Même schéma
De programme, Concept identique au Canal de communication Mais les messages publiés ne sont pas persistants Les messages publiés ne sont pas connus du souscripteur avant sa connexion
Point-à-point Queue
Persistance des messages Réception synchrone ou asynchrone
ENSI
Systèmes et applications répartis
35
Composants d’une application JMS
Fournisseur JMS (MOM)
Modèle Point-à-Point, Pub/sub Fonctions administration
Clients JMS
Producteur, consommateur
Objets administrés
Connection factories: créent les connexions entre clients (producteurs et
consommateurs) et JMS providers Point d’accès à un JMS provider Connection : encapsule une socket TCP/IP entre un client et un serveur JMS
Destinations
Est un canal de communication
– Queue pour le modèle point-à-point – Topic pour publish/subscribe
Messages
ENSI
Systèmes et applications répartis
36
Composants d’une application JMS
ENSI
Systèmes et applications répartis
37
Architecture générale de JMS
Client JMS
Connection
Session
Consumer
Client JMS
Connection
Session
Producer
Publicité
message
Destination
Serveur de messages
SAR --MOM & JMS
38
Architecture JMS (3)
Une connexion est liée à un serveur de message
Une session existe à l’intérieur d’une connexion
Il peut y avoir plusieurs sessions par connexion
La session gère le processus global de transmission
Le consommateur/producteur existe seulement à l’intérieur d’une session
Le consommateur/producteur connaît seulement la destination
Le message n’existe qu’à l’intérieur d’une session
SAR --MOM & JMS
39
Architecture générale de JMS
ENSI
Systèmes et applications répartis
40
JNDI
JNDI : Java Naming and Directory Interface
API pour gérer des annuaires de données ou d’objets
Les annuaires peuvent être gérés par des fichiers ou par des
systèmes d’annuaires répartis comme LDAP
JNDI offre essentiellement deux méthodes :
Bind : qui permet de donner un nom à une ressource Lookup : qui permet de trouver la ressource à partir du nom
JNDI est utilisé par RMI, JMS et Java EE
SAR--CORBA
41
Services de JMS
Ce que définit JMS
La création de messages structurés (entêtes, propriétés, corps) La connexion a un fournisseur JMS nommé via JNDI La récupération d’une file ou d’un sujet nommés via JNDI La production d’un message dans une file ou un sujet La consommation d’un message depuis une file ou un sujet
Ce qui n’est pas défini par le standard
L’administration (création, destruction, vidage...) des files Comment sont stockées les files La répartition d’un fournisseur JMS L’interopérabilité entre plusieurs fournisseurs JMS (cf. MOMA : MOM
Association)
...
SAR--CORBA
42
Message JMS
Types de message :
TextMessage MapMessage BytesMessage StreamMessage ObjectMessage
String <Clé,Valeur> flot de bytes flot type primitifs Objet sérialisé Mode de consommation des messages : push et pull Persistance, fiabilité, défaillance :
getText(), setText() setString(), getString() writeBytes(), readBytes() writeString(), … getObject(), setObject()
Le serveur JMS s’arrête …
À la remise en état, tous les messages (persistants) sont de nouveau envoyés …
– -> cela engendre donc qu’un même message peut être reçu plusieurs fois…
JMS possède 2 modes:
– Messages sauvegardés dans la mémoire persistante: PERSISTENT mode ou
NON_PERSISTENT mode
– Par défaut le mode est PERSISTENT
De plus, les messages peuvent avoir un time to live
ENSI
Systèmes et applications répartis
43
Anatomie d’un message JMS
Entêtes
Automatiques Paramétrables
Propriétés
Spécifiques à l’application Définies par JMS ou par le MOM
Charge Utile
Sélecteur de message Type de message
ENSI
Systèmes et applications répartis
44
Graphe de classes
ENSI
Systèmes et applications répartis
45
Souscription durable
Dans le mode publish/subscribe, par défaut, les messages publiés sont livrés uniquement aux souscripteurs actifs
Alternativement, il est possible de créer des souscripteurs
durables Messages sont retenus et récupérés quand les
souscripteurs passent des périodes non actives aux périodes actives
ENSI
Systèmes et applications répartis
46
Etapes du mode Point-à-Point
Emetteur
Destinataire
Trouver la queue Créer une connexion et une session
Spécialiser une communication D’envoi sur la queue
Envoyer un message sur la queue
Spécialiser une communication de Réception sur la queue
Demander la réception d’un message
SAR --MOM & JMS
47
Etapes du mode Point-à-Point
QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…"); Queue queue = (Queue) messaging.lookup("…"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(…);
QueueSender sender = session.createSender(queue);
TextMessage msg = session.createTextMessage(); msg.setText("…"); sender.send(msg);
String selector = new String("(name = 'Bull') or (name = 'IBM'))"); QueueReceiver receiver = session.createReceiver(queue, selector);
TextMessage msg = (TextMessage) receiver.receive();
SAR --MOM & JMS
48
Mode Publication / Souscription (Pub/Sub)
Emetteur
Destinataire
Trouver la queue Créer une connexion et une session
Créer un sujet
Publier un message
Préparer un listener de message s pour l’écoute
Se mettre à l’écoute d’un sujet
SAR --MOM & JMS
49
Mode Publication / Souscription (Pub/Sub)
Emetteur
Destinataire
TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…"); Topic topic = (Topic) messaging.lookup("/A/x"); TopicConnection connection = connectionFactory.createTopicConnection(); TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE);
TopicPublisher publisher = session.createPublisher(topic);
publisher.publish(msg);
void onMessage(Message msg) throws JMSException { // unpack and handle the message … }
TopicSubscriber subscriber = session.createSubscriber(topic); Subscriber.setMessageListener(listener);
SAR --MOM & JMS
50
MOM
Exemples de MOM : IBM MQ/Series, MSMQ et JORAM
ENSI
Systèmes et applications répartis
51
IBM MQ/Series
Leader du marché (66% du marché) Plates-formes
>20 plates-formes 5 protocoles réseaux langages (C++, C, Cobol, Java, PL/1, …)
Nombreux modules
Publish/Subscribe, Workflow, ...
ENSI
Systèmes et applications répartis
52
Architecture de MQ/Series
ENSI
Systèmes et applications répartis
53
Composants de MQ/Series
Queue Manager : responsable de
envoi des messages présents dans sa queue stockage des messages entrants dans la queue entrante appropriée
peut être dans une machine différente de celle de l’application (communication
RPC)
Message channel : connecte deux queue managers
Unidirectionnel, fiable Chaque bout d’un message channel est géré par un agent : responsable de l’envoi
ou de la réception des messages
Message
Entête
Destination : Queue Manager destination + queue destination Nom de la queue source
Utilisation table de routage (destQM,sendQ) QM ID unique dans le système
ENSI
Systèmes et applications répartis
54
MSMQ (MicroSoft Message Queue)
MSMQ est une implémentation Microsoft de MOM. Messages conservés dans des queues qui sont gérées par
des Queue managers .
ENSI
Systèmes et applications répartis
55
MSMQ
Plates-formes NT/2000 (v2) et XP (v3)
Réseaux IP et IPX IP Multicast (avec PGM pour la tolérance aux pertes) (v3) Transport sur HTTP/HTTPS et message à enveloppe SOAP (v3)
Modèles (v3)
One-To-One, One-To-Many Distribution Lists Real-Time Messaging Multicast Message Queuing Triggers
activation d’une méthode d’un objet COM sur réception SDK MSMQ pour C, C++, ActiveX, MSMQ Explorer
ENSI
Systèmes et applications répartis
56
MSMQ
Serveur (v2)
4 types de serveur
PEC pour Primary Enterprise Controller
– informations sur la topologie (sites, liaisons entre sites et RC)
PSC pour Primary Site Controller
– informations sur les sites (serveurs, clients et files d’attente)
BSC pour Backup Site Controller
– secours et équilibrage de charge de PSC
RS pour Routing Server MSMQ Information Store (MQIS)
– référentiel (utilise SQL Server ou Active Directory)
Dépôt transactionnel de message (MTS) 2 Go par file (v2), 1 To par queue (v3)
Client
Windows CE, Win9x, … SDK MSMQ pour C, C++, ActiveX, MSMQ Explorer
ENSI
Systèmes et applications répartis
57
JORAM : Java Open Reliable Asynchronous Messaging
Implantation open source de l’API cliente JMS MOM JMS
Destination : Pt-à-Pt (Queue) et Pub/Sub (Topic) Architecture Multi-Serveurs Open Source Usage double
Service de messagerie autonome pour applications Java Composant de messagerie asynchrone intégré dans un serveur
d’application J2EE (JonAS, JBoss, etc.)
Publicité
Utilisation
Kelkoo (remontée de log) Schneider Electric (remontée de mesures de capteurs) …
ENSI
Systèmes et applications répartis
58
JORAM
Architecture Multi-Serveurs
Une destination par serveur
La ConnectionFactory est connectée au serveur
Equilibrage de charge (Load Balancing)
La Destination est répliquée sur R serveurs (pair à pair)
– Connexions: TCP, HTTP, SSL, …
Privilégie la consommation locale des messages
– Pas d’ordre global des messages – Ordre local
Haute disponibilité (High Availability)
Serveur maître répliquant (JGroup) ses queues/topics sur S serveurs esclaves
(S>0)
La ConnectionFactory du client JMS peut basculer du serveur maître vers un
des serveurs esclaves
Basé sur le MOM ScalAgent
ENSI
Systèmes et applications répartis
59
La plate-forme SCALAGENT
Bus logiciel à base d’agents communicants
Agents = objets réactifs
Persistants Légers : infrastructure d’exécution partagée au sein d’un serveur
d’agents
Modèle événement / réaction asynchrone
Événement : changement d’état significatif du système auquel un ou plusieurs agents réagissent Événement = Notification Réaction = fonction dans la classe Agent
Agent
SendTo
Agent
React
Channel
L’architecture distribuée SCALAGENT
Infrastructure basée sur un bus à messages
Acheminement des notifications Exécution de la réaction du destinataire Distribution: forte interconnexion des bus locaux
Agent
Agent
SendTo
Agent
Agent
A r e v r e S
Channel
Engine
Channel
Engine
mq
mq
React
S e r v e r B
Les propriétés de la plate-forme
Persistance
Sauvegarde des agents et notifications
Atomicité
Cohérence garantie par un moniteur transactionnel
Persistance + Atomicité = Fiabilité
Une notification est délivrée une et une seule fois
Ordonnancement causal
Les notifications sont délivrées
selon un ordre causal
A
C
B
JORAM & Scalagent
JORAM implémente la norme JMS via une technologie à base
d’agents, la plate-forme Scalagent.
JORAM est l’interface JMS du MOM SCALAGENT
Les queues et topics sont des agents Les messages sont encapsulés dans des notifications
Délivrance asynchrone Garantie de délivrance Reprise après panne
Apports de l’infrastructure à agents
Architecture totalement distribuée Scalabilité
JMS via le MOM Scalagent
Message JMS
QueueSender
QueueSession
1
t n e i l
C
MOM Scalagent
S M J s t n e i l
C
QueueConnection
Connexion TCP
Agent Proxy
queue
Agent Queue
QueueConnection
Connexion TCP
Agent Proxy
2
t n e i l
C
QueueSession
QueueReceiver
Message JMS
Intégration dans JOnAS
JORAM implémente la partie ASF (Application Server Facilities)
de la spéc. JMS
Intégration de JORAM en tant que ressource dans un
environnement transactionnel distribué tel qu’un serveur EJB
Envoi et réception de messages dans des transactions gérées
par le serveur EJB
Réception asynchrone via les « Message-driven Beans »
Conclusion : Avantages des MOM
Intégration de multiples protocoles et des multiples plateformes Messages définis par les utilisateurs GMD : Guaranteed Message Delivery Equilibrage de charge Tolérance de pannes Support pour plateformes hétérogènes Gestion et configuration sur interfaces graphiques
ENSI
Systèmes et applications répartis
67
Références (1)
Chantal Taconet. Message Oriented Middleware illustrated with JMS. ASR/CSC5002, Telecom
SudParis. 23 octobre 2011. http://www-inf.it-sudparis.eu/COURS/mari/Diapos/mom-diapos.pdf
André Freyssinet. JORAM, un intergiciel de communication asynchrone. Scalagent Distributed
Technologies. http://joram.ow2.org/doc/ICAR/ICAR06.pdf
A. Tanenbaum et Marteen van Steen. Distributed Systems-Principles and Paradigms. Pearson-
Prentice Hall. 2002.
Sacha Krakowiak. Communication par événements et bus à messages. Systèmes et applications
répartis, Master M2-P, Spécialité Génie Informatique. Polytech' Grenoble RICM-3. http://proton.inrialpes.fr/~krakowia/Enseignement/M2P-GI/Flips/4-MessagesEvents-1pp.pdf
Anindya Kumar Jena. Architecture of Message Oriented Middleware. National Institute of
Science & Technology (NIST). https://rapidshare.com/#!download|779p8|254498855|Architecture_of_Message_Oriented_Mi ddleware.ppt|465|R~F72905F9B3C51DB1EDC204641CD84C59|0|0
ENSI
Systèmes et applications répartis
68
Références (2)
Jean-michel Douin. JMS,MOM, MDB, Java Message Service, Message-
Oriented Middleware, Message-Driven Bean. Architectures Logicielles Java, CYCLE APPROFONDISSEMENT C3. Cnam Paris. version 8 mars 2012. http://java.cnam.fr/iagl/glg204/cours/GLG203_JMS_MDB_jmd.pdf Didier DONSEZ. Message Oriented Middleware (MOM), Java Message
Service (JMS). PolyTech’Grenoble - LIG/ADELE. http://www-adele.imag.fr/users/Didier.Donsez/cours Philippe ISORCE. Étude d’un Middleware. Département Télécommunications, Services & Usages. INSA-Lyon. http://perso.citi.insa-lyon.fr/sfrenot/cours/SID/cours/SID26- MID_MOM_2.pdf
ENSI
Systèmes et applications répartis
69
Annexe
JMS en pratique (OpenJMS)
ENSI
Systèmes et applications répartis
70
La session au centre
ENSI
Systèmes et applications répartis
71
Context
ENSI
Systèmes et applications répartis
72
Connection
ENSI
Systèmes et applications répartis
73
Session
ENSI
Systèmes et applications répartis
74
Destination (Queue par exemple)
ENSI
Systèmes et applications répartis
75
MessageProducer
ENSI
Systèmes et applications répartis
76
MessageConsumer
ENSI
Systèmes et applications répartis
77
Réception asynchrone : MessageListener
public class JmsSimpleListener implements MessageListener {
/** * A simple onMessage method handling received TextMessage. * * @param message the received message */ public void onMessage(Message message) { try { if (! (message instanceof TextMessage) ) { System.out.println("onMessage() received an unhandled: " + message.getClass().getName()); return; } //traitement du message ici … } catch (Throwable t) { System.err.println((t instanceof JMSException) ? "JMSException" : "Throwable" + " Caught in onMessage(): " + t.getMessage()); } }
Remplacer receiver.receive() par listener = new JmsSimpleListener();
receiver.setMessageListener(listener);
ENSI
Systèmes et applications répartis
78
Fabriques encore …
ENSI
Systèmes et applications répartis
79
Queue : un exemple extrait de http://fiehnlab.ucdavis.edu/staff/wohlgemuth/java/jms-1
ENSI
Systèmes et applications répartis
80