2. Les principes de base
TP 1: Design Patterns appliqués
aux systèmes distribués
01
Architectures réparties: du
client/serveur au Cloud
Computing
02
Objets répartis :
RMI/CORBA
TP 2: RMI
03
Intergiciels orientés
messages : JMS
TP 3: JMS
04
05
06
Plan du module
2
07
Frameworks Labs :
Spring et ASP
TP 4 : Architecture micro-
services
Architecture micro-
services : Spring et ASP
(Exposés)
Architecture
microservices: Spring
et ASP (Exposés)
5. Motivation
Your Date Here Your Footer Here 5
Alors que dans les technologies RPC telles que RMI ou CORBA il y a une
communication synchrone directe entre un objet client et un objet serveur,
JMS introduit une couche de médiation entre un ou plusieurs producteurs et
un ou plusieurs consommateurs.
Un producteur de message va créer un message et utiliser une
implémentation JMS pour l’envoyer.
• Un consommateur va en contrepartie lire le message (le consommer).
7. Java Messaging Service
•JMS est une API standard de
Java EE (Enterprise Edition).
•Elle permet de fournir à java
une implémentation de MOM
(Message Oriented
Middleware) ou intergiciel de
communication par messages,
en quelque-sorte un service
de mail pour applications.
Your Date Here Your Footer Here 7
8. Java Messaging Service
L’usage de JMS dans l’entreprise
•Mode point à point de
circulation des documents :
Your Date Here Your Footer Here 8
9. •Mode de communication par les
alertes à plusieurs destinataires
(informations de bourse à des
courtiers, ou bien des anomalies
réseau en télécommunications…)
Your Date Here Your Footer Here 9
Java Messaging Service
L’usage de JMS dans l’entreprise
10. Java Messaging Service
Communication à plusieurs
•Alors que dans les
technologies RPC telles que
RMI ou CORBA il y a une
communication synchrone
directe entre un objet client et
un objet serveur
•JMS introduit une couche de
médiation entre un ou
plusieurs producteurs et un ou
plusieurs consommateurs
Your Date Here Your Footer Here 10
11. Java Messaging Service
Communication à plusieurs
Your Date Here Your Footer Here 11
JMS RPC (RMI, CORBA etc)
Un producteur de message va créer un
message et utiliser une
implémentation JMS pour l’envoyer.
Un consommateur va en contrepartie
lire le message (le consommer).
Une communication RPC nécessitera de
nombreux liens point à point entre
clients et serveurs
Attention à ne plus parler de clients et de
serveurs pour les consommateurs
et les producteurs, car en quelque sorte
tous les producteurs et
consommateurs sont vus comme des
clients par le courtier (“broker”)
JMS
13. Java Messaging Service
Communication à plusieurs
Your Date Here Your Footer Here 13
La communication s’établira au travers
de deux segments : par exemple
entre A et B, A établira une
communication avec le courtier JMS,
ensuite B
fera de même, à un instant pouvant
être différé. (asynchrone)
14. Java Messaging Service
Communication à plusieurs
Your Date Here Your Footer Here 14
Le courtier peut en effet stocker des
messages de façon persistante
(comme la notion de la boîte à lettres)
La boîte à lettre est dite dans JMS
Destination qui peut avoir deux
types Queue ou Topic, selon que
l’on est en mode point à point ou en
diffusion
16. Mode d’envoi
•Un mode de communication en point à point avec un
stockage temporaire dans une boîte aux lettre
appelée Queue, où un producteur va déposer un
message lu ultérieurement par un consommateur
•Un mode communication par événements, ou en
mode publication/ abonnement
(“publish/subscribe”), où 0 ou plusieurs
consommateurs écoutent sur un même canal de
diffusion appelé Topic, alimenté par un ou plusieurs
producteurs.
Your Date Here Your Footer Here 16
17. Mode d’envoi
Destinations
Envoi avec JMS Envoi avec TCP, UDP
Les destinations de type
Queue ou Topic évitent au
producteur et au
consommateur de connaître
leurs adresses respectives
Elles assurent la transparence
de localisation
Echange uniquement des
informations sous forme de
messages.
Avec les sockets, on doit
connaître
le port et le nom des
machines pour communiquer.
Les modèles RPC (CORBA,
RMI, SOAP, ...), on partage des
interfaces
Your Date Here Your Footer Here 17
18. Mode d’envoi
Notion de connexion et de session
•La connexion assure la fiabilité :
• Lorsque l’on utilise des sockets, un mode
connecté précise que le client et le serveur doivent
échanger une poignée de main (handshake) avant
de rentrer en communication.
Ce protocole assure que les deux parties sont
disponibles au moment de la communication.
Your Date Here Your Footer Here 18
La connexion JMS joue exactement ce rôle :
elle assure la fiabilité entre un client JMS et
son courtier, et l’on peut récupérer les
exceptions si la connexion est défaillante.
19. Mode d’envoi
Connexion : ConnectionFactory
•Pour envoyer un message, il faut disposer d’une
ConnectionFactory, et connaître d’autre part le
nom d’une destination, Queue ou Topic
La ConnectionFactory utilise le design pattern de
la fabrique et permet plusieurs connexions
concurrentes.
Your Date Here Your Footer Here 19
Pourquoi on utilise une ConnectionFactory?
• Elle encapsule tous les paramètres d’initialisation de la
connexion.
• La fabrique permet alors aux clients JMS de disposer
d’une configuration pré-établie puisque la fabrique
contient les paramètres d’initialisation
20. Mode d’envoi
Connexion : ConnectionFactory
•La ConnectionFactory peut provenir d’un
annuaire JNDI ou être crée à partir de paramètres
de configuration.
• La destination peut également être stockée dans
un annuaire JNDI.
Your Date Here Your Footer Here 20
21. Mode d’envoi
Session et QoS
•La connexion assure la Qualité de service (QoS):
• Une connexion peut ouvrir plusieurs sessions
•Une session est définie à l’intérieur d’une connexion
comme une délimitation temporelle permettant de
grouper des envois ou des réceptions de messages
avec des propriétés spécifiques :
• mode transactionnel ou non, priorités des messages,
séquence des messages, gestion des accusés de
réception.
Your Date Here Your Footer Here 21
24. Les scénarios
•Dans JMS, un Topic implémente la sémantique de
publication et d'abonnement. Lorsque vous
publiez un message, il est envoyé à tous les
abonnés (subscribers) intéressés.
•un à plusieurs abonnés recevront une copie du
message..
Your Date Here Your Footer Here 24
25. Les scénarios
•Une Queue JMS est une destination 1 à 1 des
messages.
•Les messages envoyés dans Queue sont stockés
sur disque ou en mémoire jusqu'à ce que
quelqu'un les récupère ou expire..
Your Date Here Your Footer Here 25
27. JMS provider
•Décompressez le package dans un répertoire de
votre choix
•Accédez au répertoire bin du répertoire ainsi
décompressé
•Lancer activemq.bat start
Your Date Here Your Footer Here 27
28. JMS provider
•Félicitations ! Tu as lancé activemq
•Consultez la page http://localhost:8161/admin/
•Username et mdp : admin
Your Date Here Your Footer Here 28
29. ActiveMQ : live demo
•Fork your repo from my github!
•https://github.com/MariemZaouali/queue_test
Your Date Here Your Footer Here 29
30. Exercice
•Créer un projet hello world simulant un Topic
avec Activemq
•Une inspiration
(https://github.com/tomitribe/JMS-1.1-PubSub-
Queue-Example-with-ActiveMQ)
Your Date Here Your Footer Here 30