ENSI –SAR

Pearson
Page 1 sur 78Lecteur de document UniversityLib

ENSI –SAR

Message Oriented Middleware, Java Message Service, Distributed Systems · course

Voir tous les documents en programmation

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