Académique Documents
Professionnel Documents
Culture Documents
Quatrième partie
Intergiciels à message
Message Oriented Middleware
Intergiciels 1 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Plan
1 Introduction
La communication par message
Exemple
Les principes
2 Les intergiciels à messages
Fonctionnalités
Standardisation et produits
Kafka : un MOM évolué
3 Le standard JMS (Java Message Service)
Les concepts et principes
Les principales classes
Un exemple de publication/abonnement
IV – Intergiciels à message 2 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Difficulté
Programmation délicate car asynchrone :
Approche événementielle : Événement → Réaction
IV – Intergiciels à message 3 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Modèle élémentaire
Send(message, destination)
Receive(message, source)
Synchrone/asynchrone
Communication synchrone : rendez-vous entre émission et
réception bloquantes
Communication asynchrone :
Émission non bloquante
Réception bloquante, non déterministe
IV – Intergiciels à message 4 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Paramètres
Désignation
Communication point à point entre activités (canaux)
Communication indirecte : passage par une boite à lettres
attachée à un processus (n → 1 : port, porte)
partagée par plusieurs processus (n → m : file de messages)
Statique (ex : IPv4) ou dynamique
IV – Intergiciels à message 6 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Approche client-serveur
Interactions synchrones
Communication essentiellement 1 vers 1 (ou n vers 1)
Entités (clients, serveurs) désignées explicitement
Organisation de l’application plutôt statique
IV – Intergiciels à message 8 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
IV – Intergiciels à message 9 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Approche MOM
Communication indirecte
Communication directe
P1 P2
Communication indirecte
IV – Intergiciels à message 11 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
publier(QuelSujet) délivrer(M)
envoyer(M) s'abonner(QuelSujet)
Serveur
QuelSujet délivrer(M)
IV – Intergiciels à message 13 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
Modèle requête/réponse
IV – Intergiciels à message 14 / 39
Introduction La communication par message
Les intergiciels à messages Exemple
Le standard JMS (Java Message Service) Les principes
IV – Intergiciels à message 15 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Plan
1 Introduction
La communication par message
Exemple
Les principes
2 Les intergiciels à messages
Fonctionnalités
Standardisation et produits
Kafka : un MOM évolué
3 Le standard JMS (Java Message Service)
Les concepts et principes
Les principales classes
Un exemple de publication/abonnement
IV – Intergiciels à message 16 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
IV – Intergiciels à message 17 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
C S C
S S
C S C C C
C
Distribuée Bus logiciel
IV – Intergiciels à message 18 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
La notion de message
l’en-tête ou header qui contient les informations de gestion :
file destinataire, identifiant du message
dates de disponibilité, d’échéance, . . .
les propriétés : suite de couples (clé,valeur) précisant le
contenu du message
les données applicatives (charge utile ou payload)
IV – Intergiciels à message 19 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Fonctionnalités complémentaires
Définition de priorités entre messages
Compression des données utiles du messsage
Échéance maximale pour recevoir un message
Publication à date minimale fixée
Routage des messages d’un serveur à l’autre (forward)
Lancement d’applications lorsque des messages sont
disponibles pour elles
Possibilité d’alertes sur critères :
Présence de messages dans une file donnée
Nombre de messages présents
IV – Intergiciels à message 20 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
IV – Intergiciels à message 21 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Apache Kafka
Les données
Un flux est identifié par un sujet (topic)
Un flux est constitué d’enregistrements (record )
Un enregistrement contient une clef, une valeur et une date
(timestamp)
IV – Intergiciels à message 22 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Les APIs
Producer : publication
d’enregistrements
Consumer : abonnement à
des topics et obtention
d’enregistrements
Streams : transformation de
flux, un ou des flux en
entrée, un ou des flux en
sortie
Connector : vision flux de
BD source : https://kafka.apache.org
IV – Intergiciels à message 23 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Topic et partitions
Consommation
IV – Intergiciels à message 25 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
IV – Intergiciels à message 26 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Architecture globale
Traitement de flux
Séparation (branch) : scission d’un flux en plusieurs flux
Filtrage : flux limité aux enregistrements vérifiant un prédicat
map : applique une transformation à chaque enregistrement
flatmap : applique une transformation à chaque
enregistrement, pour produire 0, 1 ou plusieurs enregistrements
Agrégation des enregistrements ayant la même clef en un
unique enregistrement
Comptage des enregistrements d’une même clef
Jointure de plusieurs flux
builder.stream("clients-topic")
.map((nom, date) -> KeyValue.pair(nom.toLowerCase(),date))
.groupByKey()
.count()
.filter((nom, count) -> count > 100)
.to("clients-fidèles-topic");
IV – Intergiciels à message 28 / 39
Introduction Fonctionnalités
Les intergiciels à messages Standardisation et produits
Le standard JMS (Java Message Service) Kafka : un MOM évolué
Kafka est . . .
un intergiciel à messages, unifiant queue et abonnement, avec
objectif de performance (de Kafka et des applications
l’utilisant) → parallélisation
un système de stockage d’informations incrémentales, fiable
(réplication) et performant
un système de traitement de flux
IV – Intergiciels à message 29 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
Plan
1 Introduction
La communication par message
Exemple
Les principes
2 Les intergiciels à messages
Fonctionnalités
Standardisation et produits
Kafka : un MOM évolué
3 Le standard JMS (Java Message Service)
Les concepts et principes
Les principales classes
Un exemple de publication/abonnement
IV – Intergiciels à message 30 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
createProducer createConsumer
IV – Intergiciels à message 32 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
ConnectionFactory
Connection Connection
Queue
Session Session
Producer Consumer
IV – Intergiciels à message 33 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
ConnectionFactory
Topic
Connection Connection
/
topic
a b
x y
Session Session
Producer Consumer
listener
IV – Intergiciels à message 34 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
Un exemple de publication/abonnement
Le client éditeur : nom de la destination fourni dans args[0]
Un exemple de publication/abonnement
Un client abonné : nom de la source fourni dans args[0]
IV – Intergiciels à message 36 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
Un exemple de publication/abonnement
Le 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 37 / 39
Introduction Les concepts et principes
Les intergiciels à messages Les principales classes
Le standard JMS (Java Message Service) Un exemple de publication/abonnement
Un exemple de publication/abonnement
La création des objets globaux
import org.objectweb.joram.client.jms.tcp.TcpConnectionFactory;
public class CreateDestination {
public static void main(String args[]) throws Exception {
// Creating the JMS administered objects:
javax.jms.ConnectionFactory connFactory
= TcpConnectionFactory.create("localhost", 16010);
Conclusion
IV – Intergiciels à message 39 / 39