introduction lesintergicielsàmessages lestandardjms...

27
Introduction Les intergiciels à messages Le standard JMS (Java Message Service) Quatrième partie Intergiciels à message Message Oriented Middleware Intergiciels et applications communicantes 1 / 27

Upload: others

Post on 13-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Quatrième partie

Intergiciels à messageMessage Oriented Middleware

Intergiciels et applications communicantes 1 / 27

Page 2: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Plan

1 IntroductionLa communication asynchrone par messageExempleLes principes

2 Les intergiciels à messagesFonctionnalitésStandardisation et produits

3 Le standard JMS (Java Message Service)Les concepts et principesLes principales classesUn exemple de publication/abonnement

IV – Intergiciels à message 2 / 27

Page 3: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

La communication asynchrone par message

Objectif : exploiter les possibilités d’une communication asynchrone

AvantagesÉvite le blocage de l’appelant inhérent à l’appel procéduralDécouple l’envoi de la réceptionRécepteur(s) anonyme(s)Étend le simple protocole point-à-pointAutorise une communication de type publication/abonnement(publish/subscribe) : protocole m → n

DifficultéProgrammation délicate car asynchrone :Approche événementielle : Événement → Réaction

IV – Intergiciels à message 3 / 27

Page 4: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Communication indirecte

Communication directe

P1 P2

Site S1 Site S2Réseau

Communication indirecte

Site S1 Site S2

Serveurcourtier

Site S3

Editeur Abonné

IV – Intergiciels à message 4 / 27

Page 5: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Exemple : supervision d’un réseauContexte

Surveillance de l’état de machines, systèmes et applicationsdans un environnement distribuéFlot permanent de données en provenance de sources diversessur le réseauPossibilité permanente d’évolution (ajout, suppression,déplacement des équipements)Possibilité d’accès des administrateurs depuis n’importe quelposte de travail

Objectifssuivi des changements de configuration dynamiquesémission de messages signalant les changements d’état et lesmises à jourstatistiques, journal de fonctionnement

IV – Intergiciels à message 5 / 27

Page 6: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Approche client-serveur

Interactions synchronesCommunication essentiellement 1 vers 1 (ou n vers 1)Entités (clients, serveurs) désignées explicitementOrganisation de l’application plutôt statique

IV – Intergiciels à message 6 / 27

Page 7: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Approche client-serveur par inversion de contrôle

Client-serveur avec inversion du contrôleLe service d’administration s’abonne auprès des clients sur lesévénements qui l’intéressentLes clients contactent le service d’administration en cas de telévénement⇒ mécanisme de « callback »Entités (clients, serveurs) désignées explicitementOrganisation de l’application plutôt statiqueDécouverte de nouveaux équipements ?

IV – Intergiciels à message 7 / 27

Page 8: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Approche MOM

Les composants administrés émettent des messages :changements d’état et de configuration, d’alerteshorloge (relevé périodique, statistiques)

Des processus cycliques (démons) mettent à jour l’état dusystème à partir des notifications reçuesInversion des rôles des producteurs et des consommateurs dedonnées

IV – Intergiciels à message 8 / 27

Page 9: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Les principes

Communication asynchrone par messagesEnvoi asynchrone : l’émetteur ne se bloque pasRéception sélective à la demande du récepteurDiffusion possible d’un message à plusieurs récepteursCouplage minimal entre émetteur et récepteur :

L’émetteur ne connaît pas le(s) récepteur(s) : il publieUn récepteur doit explicitement souscrire pour recevoirUn récepteur contrôle à quel moment il accepte

Le récepteur peut ne pas être actif (présent) lorsque lemessage est envoyé

Usage : Architectures logicielles à composants

IV – Intergiciels à message 9 / 27

Page 10: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Queue vs Sujet (Topic)

File de messages / Message QueueInterface : ajouter dans la file, retirer dans la filePlusieurs producteurs, plusieurs consommateursRetrait destructifPersistanceDécouplage temporel production / consommation

Publication / abonnementInterface : envoyer un message, obtenir un messagePlusieurs producteurs, plusieurs consommateursRetrait non destructif, mais chaque consommateur n’obtientqu’au plus une fois chaque messageAbonnement pour délivrance asynchrone

IV – Intergiciels à message 10 / 27

Page 11: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

L’échange par publication/abonnement (publish/subscribe)

Cl1 Cl3Cl2

Serveur

publier(QuelSujet)

s'abonner(QuelSujet)

délivrer(M)

délivrer(M)

QuelSujet

s'abonner(QuelSujet)envoyer(M)

Précédence temporelle : on ne peut recevoir que ce qui a étépublié après s’être abonné (contrairement à une queue)

IV – Intergiciels à message 11 / 27

Page 12: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Modèle requête/réponse

Modèle client-serveur avec des messages :Une file de requêtes par serveurUne file de réponse par clientUne requête identifie la file de réponse à utiliserClient :

1 envoyer message de requête sur la file de requête2 attendre message de reponse sur sa file de réponse

Serveur :1 attendre message de requête sur la file de requête2 traiter la requête3 envoyer message de reponse sur la file de réponse identifiée

dans la requête

IV – Intergiciels à message 12 / 27

Page 13: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

La communication asynchrone par messageExempleLes principes

Domaine d’application : systèmes faiblement couplés

Découplage temporel : interactions asynchrones / systèmesautonomes communicants

Communication en mode « push » : découverte des évolutionsde l’environnementFonctionnement en mode déconnecté : site absent ouutilisateur mobile

Découplage spatial : systèmes à grande échelleFonctionnement en mode partitionné / déconnectéCommunication « anonyme »Communication n–m

Découplage sémantique : systèmes hétérogènesModèle d’interaction minimal → possibilité d’intégrer desenvironnements (systèmes, réseaux) / applications hétérogènes

IV – Intergiciels à message 13 / 27

Page 14: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)FonctionnalitésStandardisation et produits

Plan

1 IntroductionLa communication asynchrone par messageExempleLes principes

2 Les intergiciels à messagesFonctionnalitésStandardisation et produits

3 Le standard JMS (Java Message Service)Les concepts et principesLes principales classesUn exemple de publication/abonnement

IV – Intergiciels à message 14 / 27

Page 15: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)FonctionnalitésStandardisation et produits

Les intergiciels à messagesMOM : Message-Oriented Middleware

Architecture et fonctionnalités de baseLes clients (applicatifs) s’adressent à un serveurIls envoient/recoivent leurs messages au(x) serveur(s)Un service courtier (broker ou provider) sert d’intermédiairepour stocker et router les messages vers leurs destinatairesLe protocole d’échange peut être de type publier/s’abonner(publish/subscribe)Critère de réception par le contenu, par le sujet (topic)Gestion de la persistance des messagesCommunication point-à-point possible

IV – Intergiciels à message 15 / 27

Page 16: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)FonctionnalitésStandardisation et produits

Architectures du service courtier

Centralisée Snowflake

S

C C

C C

S

C S

C S

S

S

C

C

S

C S

C SS

C

C

C C C

Distribuée Bus logiciel

IV – Intergiciels à message 16 / 27

Page 17: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)FonctionnalitésStandardisation et produits

Intergiciel à messages (suite)

Les éléments d’un intergiciel à messageService de gestion des messages implanté par un ou plusieursserveurs (providers)Une API clientLes objets messages pour communiquer

La notion de messagel’en-tête ou header qui contient les informations de gestion :

file destinataire, identifiant du messagedates de disponibilité, d’échéance, . . .

les propriétés : suite de couples (clé,valeur) précisant lecontenu du messageles données applicatives (charge utile ou payload)

IV – Intergiciels à message 17 / 27

Page 18: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)FonctionnalitésStandardisation et produits

Intergiciel à messages (suite)

Fonctionnalités complémentairesDéfinition de priorités entre messagesCompression des données utiles du messsageÉchéance maximale pour recevoir un messagePublication à date minimale fixéeRoutage des messages d’un serveur à l’autre (forward)Lancement d’applications lorsque des messages sontdisponibles pour ellesPossibilité d’alertes sur critères :

Présence de messages dans une file donnéeNombre de messages présents

IV – Intergiciels à message 18 / 27

Page 19: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)FonctionnalitésStandardisation et produits

La standardisation et les produits MOM

Un standard de fait pour l’API : JMS (Java Message Service)Quelques MOM :

Version réalisée par Sun (Sun Java System Message Queue)ActiveMQ de ApacheJoram de l’INRIA (intégré dans Jonas)OpenJMS, premier Open Source compatible JMSProgress SonicMQ (produit commercial)Version Microsoft : MSMQ (associé à .Net)

IV – Intergiciels à message 19 / 27

Page 20: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Plan

1 IntroductionLa communication asynchrone par messageExempleLes principes

2 Les intergiciels à messagesFonctionnalitésStandardisation et produits

3 Le standard JMS (Java Message Service)Les concepts et principesLes principales classesUn exemple de publication/abonnement

IV – Intergiciels à message 20 / 27

Page 21: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Le standard JMS (Java Message Service)

Les objets globaux (administrés) accessibles à distanceDésignation par JNDI (Java Naming and Directory Interface)Les fabriques de connexions (connection factories)Les destinations réparties en 2 domaines de désignation :

files (queues) et sujets (topics)Ces objets sont créés dans le(s) serveur(s) courtier(s)implantant JMS

Les objets clientsLes connexions permettent de se connecter à un serveur JMSLes sessions gèrent les échanges via une file ou un sujetLes producteurs/consommateurs de messages pour l’envoi/laréception de messages dans le cadre d’une session

IV – Intergiciels à message 21 / 27

Page 22: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Les objets de communication

ConnectionFactory

Queue

Topic

Destinations

Connection

createXConnection()

XSession

MessageProducer

MessageConsumer

Msg

createXSession(...)

createPublisher

X = Queue ou Topic

createSubscriber

createMessage

CLIENT

SERVEUR

createSender createReceiver

MessageListener

IV – Intergiciels à message 22 / 27

Page 23: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Un exemple de publication/abonnementLe client éditeur : nom de la destination fourni dans args[0]

import javax.jms.* ; import javax.naming.* ;public class Editeur {public static void main(String[] args) {try {InitialContext jndiCtx = new InitialContext();ConnectionFactory scf = (C...) jndiCtx.lookup("MaConnFactory");Destination dest = (Destination) jndiCtx.lookup(args[0]);Connection conn = scf.createConnection();conn.start();Session session =

conn.createSession(false,Session.AUTO_ACKNOWLEDGE);MessageProducer editeur = session.createProducer(dest);TextMessage m = session.createTextMessage();m.setText("publication exemple");editeur.send(m); ...

}IV – Intergiciels à message 23 / 27

Page 24: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Un exemple de publication/abonnementUn client abonné : nom de la source fourni dans args[0]

import javax.jms.* ; import javax.naming.* ;public class Abonne {public static void main(String[] args) {try {InitialContext jndiCtx = new InitialContext();ConnectionFactory scf = (C...) jndiCtx.lookup("MaConnFactory");Destination src = (Destination) jndiCtx.lookup(args[0]);Connection conn = scf.createConnection();Session session =

conn.createSession(false,Session.AUTO_ACKNOWLEDGE);MessageConsumer abonné = session.createConsumer(src);abonné.setMessageListener(new MonMsgListener());conn.start();...

IV – Intergiciels à message 24 / 27

Page 25: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Un exemple de publication/abonnementLe traitant activé sur occurrence d’un message

import javax.jms.* ;public class MonMsgListener implements MessageListener {

public void onMessage(Message m) {try {if (m instanceof TextMessage) {TextMessage msg = (TextMessage) m ;System.out.println(msg.getText()) ;}

} catch (JMSException je) {...}}

}

IV – Intergiciels à message 25 / 27

Page 26: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Un exemple de publication/abonnementLa création des objets globaux

public class CreateDestination {public static void main(String args[]) throws Exception {

// Creating the JMS administered objects:ConnectionFactory connFactory

= TcpConnectionFactory.create("localhost", 16010);

Destination destination = Topic.create(0);// Destination destination = Queue.create(0);

// Binding objects in JNDIjavax.naming.Context jndiCtx = new InitialContext();jndiCtx.bind("MaConnFactory", connFactory);jndiCtx.bind("MonTopic", destination);}

}

IV – Intergiciels à message 26 / 27

Page 27: Introduction Lesintergicielsàmessages LestandardJMS ...queinnec.perso.enseeiht.fr/Ens/SAD/mom.pdf · Introduction Lesintergicielsàmessages LestandardJMS(JavaMessageService) Lacommunicationasynchroneparmessage

IntroductionLes intergiciels à messages

Le standard JMS (Java Message Service)

Les concepts et principesLes principales classesUn exemple de publication/abonnement

Conclusion

Mode de communication adaptée à la circulation desinformations dans le système informatique des entreprisesIntégration dans des intergiciels à base de composantsMécanisme de base dans les bus de services

IV – Intergiciels à message 27 / 27