0% ont trouvé ce document utile (0 vote)
46 vues26 pages

Message Oriented Middleware (MOM) Java Message Service (JMS)

Transféré par

Ahmat Hassan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
46 vues26 pages

Message Oriented Middleware (MOM) Java Message Service (JMS)

Transféré par

Ahmat Hassan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

18/05/2014

[Link]

Message Oriented Middleware (MOM)


Java Message Service (JMS)
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

Merci à Didier DONSEZ


Université Joseph Fourier (Grenoble 1)
PolyTech Grenoble – LIG ERODS
[Link]@[Link]
[Link]@[Link]
17/05/2014 MOM & JMS, Didier Donsez, 1998-2012 1

[Link]

Message Oriented Middleware (MOM)

Didier DONSEZ !!
Université Joseph Fourier (Grenoble 1)
PolyTech Grenoble LIG ERODS
[Link]@[Link]
[Link]@[Link]
17/05/2014 MOM & JMS, Didier Donsez, 1998-2012 2

1
18/05/2014

17/05/2014

Motivations
 Modèle Client-Serveur
 requêtage synchrone
 RPC DCE et DCOM, CORBA, RMI
 inconvénient : connexion permanente des 2 parties
 Problème des pannes/connexions transitoires
 Delay-Tolerant Networks
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

Une alternative : la messagerie « Messaging »


inter-application
les messages (qui peuvent être des requêtes et leurs réponses)
sont envoyés quand la connexion est ouverte.
Style architectural du Store-and-Forward
 voir [Link]

 Ne pas confondre avec le Message Passing


Ex MPI, PVM: surcouches aux sockets pour applications parallèles
3
facilitant l’échange de données sans notion explicite de boite à messages

17/05/2014

Motivations
 Applications (passage à très grande échelle)
 Diffusion d ’information (push)
 news, stock quote, weather forecast ...
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)


MOM & JMS, Didier Donsez, 1998-2012

Collecte des données (journaux Firewall, mesures réseaux


de capteurs, …)
Déploiement grande échelle de logiciels (antivirus, …)

...

2
18/05/2014

17/05/2014

Principe
 Messagerie inter-application
Asynchrone
Non temps réel – Offline (Not online)
s ’oppose aux ORBs synchrones (Corba, DCOM, RMI)

 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: guaranteed delivery
Partage d ’une file par plusieurs applications

Priorité des messages

Filtrage des messages à la réception


MOM & JMS, Didier Donsez, 1998-2012

 Avantages
Insensible aux partitions de réseaux (sans fil, satellite, WLAN, …)

Insensible aux applications non disponibles (temporairement) ou latence


17/05/2014

Principe des Files de Messages (i)


A1

// production d ’un msg File de message
build(msg1)
MQPUT(queue,msg1)
... 1
1
MOM & JMS, Didier Donsez, 1998-2012

3
18/05/2014

17/05/2014

Principe des Files de Messages (ii)

File de message A2

// consommation d ’un msg
L ’application A1
s ’est terminée
1 MQGET(queue,msg)
1 process(msg)
MOM & JMS, Didier Donsez, 1998-2012

Le message est retiré


de la file
par MQGET

17/05/2014

Principe des Files de Messages (iii)

File de message A2

// consommation d ’un msg
MQGET(queue,msg)
2 process(msg)

A3

MOM & JMS, Didier Donsez, 1998-2012

// production d ’un msg


build(msg2) 2
MQPUT(queue,msg2)
...

4
18/05/2014

17/05/2014

Principe des Files de Messages (iv)

File de message A2

// consommation d ’un msg
MQGET(queue,msg)
2 process(msg)

// consommation d ’un msg
MQGET(queue,msg)
Le message est retiré 2 process(msg)
MOM & JMS, Didier Donsez, 1998-2012

de la file …
par MQGET
L ’application A3
s ’est terminée

17/05/2014

Modèles de messageries
 Routage de Message
 par l ’identité de l ’application
 par le contenu du message
chaque application consommateur définit un critère sur les messages à
consommer
le critère peut être 1 expression booléenne sur les valeurs de champs du
message
 Modèles
 Message Queue (e.g. ma boite aux lettres mail)
un message envoyé (produit) est consommé par un seul client
 Publication-Souscription
MOM & JMS, Didier Donsez, 1998-2012

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 basé sur des queues pour ces messages là
10

5
18/05/2014

17/05/2014

Modèle des Message Queues


A1 A3
… …
// production d ’un msg // consommation d ’un msg
Queue MQGET(queue,msg)
build(msg1)
MQPUT(queue,msg1) process(msg)
... 1 1 …

2 1
A3
A4
… …
// production d ’un msg 2
MOM & JMS, Didier Donsez, 1998-2012

// consommation d ’un msg


build(msg2) 2 MQGET(queue,msg)
MQPUT(queue,msg2) process(msg)
... …

11

17/05/2014

Modèle Publication-Souscription
P1 S1
… …
// production d ’un msg Topic TGET(topic,msg1)
build(msg1) process(msg1)
TPUT(topic,msg1) TGET(topic,msg2)
... 1 process(msg2)

2 1
P2
S2
… …
MOM & JMS, Didier Donsez, 1998-2012

// production d ’un msg TGET(topic,msg1)


build(msg2) 2 process(msg1)
TPUT(topic,msg2) TGET(topic,msg2)
... process(msg2)

12

6
18/05/2014

17/05/2014
Publication-Souscription
sur des topics hiérarchiques

D’après Dave Chappell


MOM & JMS, Didier Donsez, 1998-2012

13

17/05/2014
Publication-Souscription par le
contenu
P1 S1
… …
// production d ’un msg MQGET(queue,msg,filter12)
build(msg1) Topic process(msg)
MQPUT(queue,msg1,prop1) MQGET(queue,msg, filter12)
process(msg)
...
1 …

2 1
Pre-traitement Post-traitement
P2
… S2

// production d ’un msg
2 MQGET(queue,msg, filter2)
MOM & JMS, Didier Donsez, 1998-2012

build(msg2)
process(msg)
MQPUT(queue,msg2,prop12)

...

Attention: ne pas confondre Filtering sur 1 Topic (ex: JMS) et véritable content based 14

7
18/05/2014

17/05/2014

Modèle Requête-Réponse
 Implémente le modèle Client-Serveur

App «Serveur»

App «Client» File de requête


« reqQueue »
... ...
MQPUT(reqQueue,reqmsg) // wait request
// wait response req MQGET(reqQueue,request)
// wait ... process request
// wait ... MQPUT(resQueue,response)
MOM & JMS, Didier Donsez, 1998-2012

// wait ... res // wait another request


MQGET(resQueue, resmsg) MQGET(reqQueue,request)
... …
File de réponse
« resQueue »
15

17/05/2014

Modèles de messageries
 Routage hiérarchiques de Messages
 Motivation : Passage à l‘échelle de la remontée des évènements
Hiérarchisation des publicateurs et des souscripteurs
Fonctions des routeurs
Filtrage, fusion, store and forward

 Exemple
Parc d’onduleur --- event (charge, conso, ...) ---> maintance server
Réseaux d’opérateurs

Publisher

MOM & JMS, Didier Donsez, 1998-2012

(UPS) Sub&Pub
Publisher (Site mng sv) 
(UPS)  Subscriber
Publisher 
(UPS)  (glob mng sv)
Sub&Pub
Publisher (Site mng sv)
(UPS)  16

8
18/05/2014

17/05/2014

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és, …

 maintiennent des copies des messages


réplication (serveurs primaires, serveurs secondaires)

 Administrateur/Contrôleur du MOM
MOM & JMS, Didier Donsez, 1998-2012

crée et surveille les files


définit la topologie des interconnections entre serveurs

définit les politiques de connexion (période, …)

17

17/05/2014

Implémentation
 Architecture
 Centralisée : Spoke and Hub client client client

MOM
client client client client Server
 Distribuée : Bus

MOM MOM
Server Server
MOM & JMS, Didier Donsez, 1998-2012

 Pair à Pair : Snowflake

 QoS
Disponibilité (du MOM?), Causalité msgs délivrés respectée, Fiabilité
(perte possible msgs?), Passage à l’échelle, Sécurité, …
18

9
18/05/2014

17/05/2014

Architecture d ’un MOM

Connections Connections
permanentes épisodiques
MOM Client entre le client entre les serveurs MOM Client
et son serveur

 

MOM Server Wide Area MOM Server


Network
MOM & JMS, Didier Donsez, 1998-2012

 Message  Message
Repository   Repository 

MOM Product

19

17/05/2014
Exemple multiplateforme d ’un MOM
(IBM MQ-Series)
 Hétérogénéité de Systèmes et de Réseaux

MQSeries MQSeries MQSeries


Client Client Client

  

MQ Server IP based MQ Server SNA MQ Server


MOM & JMS, Didier Donsez, 1998-2012

network network
WinNT  AS400  MVS

IBM MQ-Series
20

10
18/05/2014

17/05/2014

Interopérabilité entre MOMs ?


Difficulté de faire intéropérer des MOM
Pas de standardisation entre les MOM, de base
Certains efforts plus récents pour définir un protocole de Messagerie
Interoperable : AMQP

 Des tentatives (historiques) pour l ’interopérabilité


 CORBA 3.0
introduction de la notion de messages asynchrones, notification service
 J2EE
JMS [Link]
MOM & JMS, Didier Donsez, 1998-2012

API Java permettant à des clients d’envoyer/recevoir des messages


avec des serveurs implémentant des JMS SPI sans pour autant être des
implémentations du protocole de messagerie JMS
EJB : Message-Driven Bean

21

17/05/2014

Interopérabilité entre MOM

MOM Client MOM Client MOM Client

  

MOM Server Wide Area MOM Server Wide Area MOM Server
Network Network
 Message  Message  Message
Repository   Repository   Repository 
MOM & JMS, Didier Donsez, 1998-2012

MOM Product Interoperability Other MOM Product


(protocol, transaction
message format, …)

 Issues : End-to-End Transactional delivery ? 22

11
18/05/2014

17/05/2014

Exemples d' « intergiciels » PubSub


Spécifications/protocoles
• OSGi Event Admin : Wire Admin
• CORBA Data Distribution Service (DDS)
• AMQP: an OASIS open Internet (or “wire”) Protocol standard for message-queuing
communications
• STOMP: Simple/Streaming Text Oriented Messaging Protocol
• MQTT: Message Queue Telemetry Transport
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

• XMPP PubSub: publish subscribe in the context of instant messaging


• ROS (Robot Operating System)
• UPnP GENA: General Event Notification Architecture.
• PubSubHubbub (hubs publics hébergés chez Google, webhooks (callbacks sur
subscribers, étend RSS/Atom)
• CoAP CORE: Constrained Application Protocol (CoAP), a RESTful protocol
Quelques solutions de brokers (plus dans prochains slides :=))
• Siena: Scalable Internet Event Notification Architectures, content based, recherche (EPFL)
• Apache Kafka: distributed publish-subscribe messaging system designed as a replicated extended
commit log service
23

17/05/2014
Opérateurs Cloud
PubSub-as-a-Service
Xively
Axeda
[Link]
Thingworx
[Link]
ClearBlade
2lemetry
AirVantage
MOM & JMS, Didier Donsez, 1998-2012

WSO2 MB

Twitter dans une certaine mesure (Hashtag=topic).

24

12
18/05/2014

17/05/2014

AMQP
Advanced Message Queuing Protocol
 [Link]
 Red Hat, Cisco Systems, IONA, iMatix, …
Standardiser l'échange de messages entre serveurs
de message (standard OASIS) hétérogènes
[Link]
 Support des transactions XA (two phases commit)
Transaction (distribuée ou pas): l’émetteur peut englober un paquet de
messages dans une transaction, ces messages ne pourront être lus que lorsque
l’émetteur les aura acquittés.
MOM & JMS, Didier Donsez, 1998-2012

 Implémentations
Red Hat Enterprise MRG, IONA, …
OpenAMQ, Apache QPid, ActiveMQ plus récemment …
JORAM, RabbitMQ: a solid multiprotocol, polyglot broker :it can send STOMP, MQTT, or AMQP
in and get one of the other ones out., 25

AMQP versus JMS


• la spéc. JMS est le vrai concurrent d’AMQP même si encore une fois les deux peuvent vivre
ensemble. Un adaptateur JMS pour AMQP peut sembler intéressant pour des projets qui
migrent vers un nouveau broker, mais il semble plus pertinent pour un nouveau projet de
commencer directement dans ce nouveau standard. Par exemple l’utilisation de la librairie
Java de RabbitMQ est vraiment très proche de l’API JMS et la vitesse d’apprentissage
semble assez rapide pour un développeur Java. Car un des problèmes de JMS c’est
justement son manque d’interopérabilité avec d’autres langages.
• [Link] : Consider the case where you want to send a
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

message from a Java message producer to a Ruby message consumer. Since Ruby can’t use
JMS, you need a message broker that can bridge the two platforms and transform the
protocol and message structure used by each platform. Since the most popular choice for
Ruby is the STOMP protocol you would need a message broker that can support both
STOMP and JMS at the same time. You can use ActiveMQ but … you would be locked into
one specific vendor solution (or in some cases only a few vendor choices) due to the built-
in message bridge. Whereas JMS provides a standard messaging API for the Java Platform,
AMQP provides a standard messaging protocol across all platforms. AMQP has taken the
broker-agnostic benefits of JMS within the Java Platform and escalated that concept to all
platforms=> autant prendre une plateforme qui est AMQP si le but est de supporter
l’hétérogénéité des lges/plateformes
• The routing model of AMQP essentially separates the transport model from the queuing
model

13
18/05/2014

OMG Data Distribution Service


 The Data Distribution Service for Real-Time Systems (DDS) is an
(OMG) standard for a M2M middleware
 Topic publish subscribe model, data transfer oriented (data=sample) « data-
broker »
 No queues but a shared data space (DB table with rows), dynamic topic-based
discovery of dataflows (matching pub with sub), interoperable
 Applications never need information about the other participating
applications, including their existence or location: DDS takes care of
determining where recipients are located
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

 Since DDS discovery is spontaneous, the topics can dynamically change over
the lifetime of a deployed distributed system based on DDS, without any
administrative impact.
≠ JMS: Static destinations are discovered via JNDI APIs, which bind logical
destination names to destination objects. The static destinations accessible this
way must have been previously configured in the JMS middleware (server)
using vendor supplied administrative tool

 De + en + d’implémentations: cibles IoT, M2M, =>pas de transactions


 Eg: used for European air traffic control
 [Link]
[Link]

17/05/2014
MQ Telemetry Transport (MQTT)
[Link] (IBM defined)
 Protocole léger de type Publish-Subscribe (no queue) pour M2M
 Hiérarchie de « topics » : /buildingF/sensors/s11/#
 Support de connectivité (TPC/IP) intermittente ou couteuse
 Satellite, WSN, ...
 Faible overhead par paquet (2 octets)
 3 niveaux de QoS pour livraison (fire-and-forget, fire-and-confirm)
0 (At Most Once),1 (At Least Once) and 2 (Exactly Once)

 Retained messages
 Sécurité par certificat (SSL/TLS) + user-password
 Nombreuses implémentations de clients et de serveurs concises
 C, C++, Arduino, Java, Python, JS ([Link]), Lua, …
MOM & JMS, Didier Donsez, 1998-2014

 80 KB pour l’implémentation de référence (IBM)


 Proposé à la standardisation OASIS
 Clients, Servers, MaaS (« metal as a service »)
 Mosquitto, Eclipse Paho ([Link]), RabbitMQ, JORAM
...

28

14
18/05/2014

17/05/2014

Comparaison de protocoles
MOM & JMS, Didier Donsez, 1998-2012
(supposant qu’ils ont été implantés)

Messaging Technologies , A Comparison Between DDS, AMQP, MQTT, JMS and REST , PrismTech
Andrew Foster , [Link]

31

17/05/2014

Comparaison
(supposant qu’ils ont été implantés)
MOM & JMS, Didier Donsez, 1998-2012

Messaging Technologies , A Comparison BetweenDDS, AMQP, MQTT, JMS and REST , PrismTech
Andrew Foster , Spetember 2013, http:// [Link]/sites/default/files/documents/[Link]

32

15
18/05/2014

17/05/2014

Le Transactionnel
La consommation et la production de messages
peuvent être des actions recouvrables
une file des messages est considérée comme une ressource recouvrable

Elles ne sont effectives


qu’à la validation d ’une transaction
tous les messages produits sont envoyés au moment de la validation, et
ceux consommés avec succès (par receive() ou onMessage()) sont retirés
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

de la file
en cas d ’abandon de la transaction, les messages produits sont
abandonnés (=non envoyés) et aucun message consommé n’est acquitté
ce qui implique qu’il reste/’’est remis dans la file’’, et sera donc re-délivré
La transaction peut être distribuée (cad inclut d’autres
partenaires externes au MOM)
Moniteur transactionnel (XA – j2ee, MTS - msoft , …)

33

17/05/2014

Conséquences du Transactionnel
L ’ordre de consommation des messages peut être différent
de l ’ordre de production
begin T1
T1 produit M1
T1 produit M2
commit T1 => M1 et M2 sont bien dans la file

begin T2
T2 consomme M1 => M1 est retiré de la file
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

begin T3
T3 consomme M2 => M2, msg suivant est retiré de la
file
abort T2 => M1 est remis dans la file
commit T3 => confirmation que M2 est bien retiré
begin T4
T4 consomme M1 => M1 est donc consommé après que M2
l’ait été
commit T4 34

16
18/05/2014

17/05/2014

Conséquences du Transactionnel
 Conception de Requête-Réponse transactionnel
l ’envoi de la requête et la réception de la réponse sont
forcément dans 2 transactions successives : Pourquoi ??

begin trans File de requête


... …
T1 send(request)
begin trans
commit trans  receive(request)
MOM & JMS, Didier Donsez, 1998-2012

process request T3
begin trans send(response)
T2 receive(response)  commit trans
... …
commit trans File de réponse 35

Messaging Transactionnel: ex de JMS


[Link]

Il y de nombreux usages des transactions JMS, d'une manière générale pour assurer la
cohérence:
• Une application peut par exemple émettre 10 messages et être assurée que soit tous
seront bien émis, soit aucun ne le sera.
• Une application qui jouerait un rôle de relais pourra ainsi lire un message sur une
queue, le traiter, et écrire un message résultant sur une queue en aval, tout cela au
sein d'une transaction, et donc avec la garantie de ne pas perdre de message si elle est
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

interrompue entre la lecture et l'écriture.


• Enfin, de la même manière, une application qui doit réceptionner plusieurs messages
avant d'effectuer un traitement, peut réunir ces lectures en une même transaction. Si
le traitement réussit, le programme client exécute un commit, sinon, il demande un
rollback, c'est-à-dire qu'il ordonne au broker de messages de tout annuler.

17
18/05/2014

17/05/2014
Acteurs et Produits MOM
« incontournables » pour l’entreprise
BEA MessageQ
IBM - MQ Series
25 plateformes

 MicroSoft - MSMQ (Message Queue Server)


essentiellement NT

 Level 8 Systems - Falcom MQ


passerelle vers MSMQ et MQ Series
MOM & JMS, Didier Donsez, 1998-2012 – F. Baude 2014

 Sybase - DBQ
Adaptive Serveur

 Tibco - TIB/RendezVous
accord avec Oracle pour Oracle 8

 JSR Java Messaging Service (v 2.0 en may 2013)


API pour les MQ, implem. très nombreuses: J2EE, Glassfish OpenMQ,…

 Apache ActiveMQ/Apollo
 support de AMQP,STOMP, groupes de mesgs avec délivrance ordonnée,
39 …

17/05/2014

Enterprise Service Bus (ESB)


 Cible l’EAI:
intégration d’applications orientées service, hétérogènes,
nécessitant de la transformation des messages
 Event Driven SOA: ED-SOA
 Messaging asynchrone entre applications
 API de l’EAI
 Ex: JBI (Java Business Integration)
 Plateformes ESB
PetalsLink Petals, Apache ServiceMix, Mulesoft Mule, Apache
Camel, OpenESB, jBoss ESB…
MOM & JMS, Didier Donsez, 1998-2012

Reposent sur des MOMs sous jacents, pour la fonction ED-SOA


Comment: « Apache ActiveMQ is a JMS provider. By using Apache
Camel you get a one-stop-shopping solution for message oriented
middleware (MOM) solutions: use the camel-jms connector to connect to
JMS compliant broker.”

40

18
18/05/2014

17/05/2014

IBM MQSeries/WebSphere MQ
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, ...
MOM & JMS, Didier Donsez, 1998-2012 – F.

 assured one-time delivery of messages across a wide


variety of platforms
 It implements the Java Message Service (JMS) standard
API, and also has its own proprietary API, known as the
Message Queuing Interface (MQI),
41

17/05/2014

MSMQ (MicroSoft Message Queue)


 Plates-formes NT/2000 (v2) et XP (v3)
Réseaux IP et IPX
IP Multicast (avec PGM pour la tolerance 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


MOM & JMS, Didier Donsez, 1998-2012

(activation d’une méthode d’un objet COM sur reception)


SDK MSMQ pour C, C++, ActiveX, MSMQ Explorer


API MSMQ dans .NET

42

19
18/05/2014

17/05/2014

MSMQ (MicroSoft Message Queue)


 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)


MOM & JMS, Didier Donsez, 1998-2012

Dépôt transactionnel de message (MTS)


2 Go par file (v2), 1 To par queue (v3)

 Client
 Windows CE, Win9x, …

43

17/05/2014

MSMQ (MicroSoft Message Queue) et WCF


MSMQ est un Binding possible pour transport des messages
de WCF
 Choisir: NetMsmqBinding
Assure la délivrance des messages WCF: ordonnée, transactionnelle,
etc, et leur persistance
“The key differentiator is that messages are placed into queues to await
processing, rather than sent directly into the WCF runtime.“
[Link]
Autre choix de binding possible dans WCF:
MOM & JMS, Didier Donsez, 1998-2012 – Fbaude 2014

Demander utilisation d’un ReliableSessionBinding qui implémente la spécification


WS-ReliableMessaging
“WS-RM is designed to control reliable delivery of single SOAP messages or
sequences of SOAP messages between two endpoints, irrespective of how these
endpoints are connected”
Reproduit en quelque sorte le fonctionnement de TCP en multi-hop->session

“WS-ReliableMessaging is a transfer protocol and it says nothing about what


should happen to the message after it is successfully received by the other
side”. It does not provide durability to messages
44

20
18/05/2014

17/05/2014
Exemple d ’ASP
utilisant MSMQ et MTS
<%@ TRANSACTION=REQUIRED LANGUAGE=JScript %>
<HTML><HEAD><TITLE>Envoi transactionnel par MSMQ</TITLE></HEAD><BODY>
<h1>Envoi transactionnel par MSMQ</h1><hr>>
<%
QueueInfo = [Link]("[Link]")
[Link] = ".\\IIS_SDK_TRANSACTED";
Queue = [Link](2, 0);
Msg = [Link]("[Link]");
[Link] = "Corps du Message"; [Link] = "Label du Message";
[Link] = 1; // recouverable : résiste au crash et au shutdown
[Link] = 1; // chiffré
[Link](Queue);
[Link]();
%>
MOM & JMS, Didier Donsez, 1998-2012

</BODY></HTML>
<%
function OnTransactionCommit() {
[Link] ("<p>La transaction est validée et le message MSMQ est envoyé."); }

function OnTransactionAbort() {
[Link] ("<p>La transaction est abandonnée");
[Link] ("et le message MSMQ n ’a pas été envoyé."); } %> 45

17/05/2014

JORAM (ObjectWeb & Scalagent)


 MOM JMS
Destination : PtoP (Queue) et PubSub (Topic)
Architecture Multi-Serveurs

Open Source

Intégré à ESB JONAS

Disponibilité sur OSGi pour déployer des bundles OSGi

Version kJORAM pour KVM

Administration par des MBeans (Console JMX)


MOM & JMS, Didier Donsez, 1998-2012

 Utilisation
Kelkoo (remontée de log)
Schneider Electric (remontée de mesures de capteurs)

…

46

21
18/05/2014

17/05/2014

JORAM (ObjectWeb & Scalagent)


 Architecture Multi-Serveurs
 Une destination par serveur
La ConnectionFactory est connecté au serveur

 Equilibrage de charge (Load Balancing)


La Destination est répliquée sur R serveurs (pair à pair)
Connections: TCP, HTTP, SSL, …

Privilégie la consommation locale des messages

Pas d’ordre global des messages

Ordre local

 Haute disponibilité (High Availability)


MOM & JMS, Didier Donsez, 1998-2012

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

47

17/05/2014
JORAM (ObjectWeb & Scalagent)
Architecture Multi-Serveurs
 Une destination par serveur

Prod Cons Cons Prod Cons


Q1 Q2 Q1 Q2 Q2
CF CF CF CF CF

U U U U U
MOM & JMS, Didier Donsez, 1998-2012

TCP, HTTP, SSL

Queue2
Queue1 
Joram Server Joram Server
48

22
18/05/2014

17/05/2014
JORAM (ObjectWeb & Scalagent)
Architecture Multi-Serveurs
Equilibrage de la charge telle que perçue par clients

Prod Cons Prod Cons


Q1 Q1 Q1 Q1
CF CF CF CF

U U U U
MOM & JMS, Didier Donsez, 1998-2012

TCP, HTTP, SSL

Queue1 Queue1
replica1
 replica2

Joram Server Joram Server


49

17/05/2014
JORAM (ObjectWeb & Scalagent)
Architecture Multi-Serveurs
Haute disponibilité (1)

Prod Cons
Q1 Q1
CF CF
MOM & JMS, Didier Donsez, 1998-2012

U U U U
JGroup

Queue1 Queue1
replica1
Joram Server  replica2
Joram
SlaveServer Joram Server
Slave Master
50

23
18/05/2014

17/05/2014
JORAM (ObjectWeb & Scalagent)
Architecture Multi-Serveurs
 Haute disponibilité (2)

Prod Cons
Q1 Q1
CF CF

U U U U
JGroup
MOM & JMS, Didier Donsez, 1998-2012

Queue1 Queue1
replica1
Joram Server  replica2
Joram
SlaveServer Joram Server
Slave Master
51

17/05/2014

MOM et Composants
 Motivations
Fournir la couche de communication pour le paradigme
Événement (=message/event reçu en asynchrone) dans des
modèles à composants (qui le supportent)
 Modèles
CORBA CCM (Corba Component Model)
.NET Asynchronous [OneWay] calls

J2EE/EJB Message Driven Beans (pas de typage des msg)


MOM & JMS, Didier Donsez, 1998-2012

55

24
18/05/2014

17/05/2014

Bibliographie
Gregor Hohpe, Enterprise Integration
Patterns,[Link]
Très bon livre traitant de l’utilisation des MOMs

 [Link]
 Site intéressant
MOM & JMS, Didier Donsez, 1998-2012

56

25
18/05/2014

Lieu de la séance de TP
d’aujourd’hui
 Pour chacun des 2 groupes:
 10h15-12h15
 13h30-15h30
Colocation Center (CLC) du Nœud Sophia-Antipolis satellite du Nœud
Paris EIT ICTLabs,
Batiment FORUM (au dessus du futur Learning center)
 Parce que j’ai besoin de faire des photos d’étudiants utilisant le CLC, pour le site web
 En vue de l’Inauguration Officielle le 28 mai 2014
UNS est membre affilié, au même titre que Eurecom. INRIA est core member, au

même titre que Orange, Alcatel, au niveau France


Autres membres que la France: Stockholm, Berlin, Helsinki, Eindhoven, Budapest,
Londres, Madrid prochainement
 Tous les CLCs travaillent en réseau

EIT ICTLabs Innovation Triangle


Ce sont vous les
entrepreneurs de demain !
Creating a new breed Enabling excellent individuals
Suite projet Innovation of entrepreneurs EIT Master
Schools MSc
and multidisciplinary teams to
develop breakthrough ideas
SI4 (SATT)
 Créer votre startup
Schools & Camps
 Vous faire aider par la SATT
Envisager de passer par du
Education Research
partenariat de niveau EU
Spearhead
Pour innover après votre Research
diplôme ou durant votre Experience Labs & Test Beds &
Simulation Tools
doctorat Living Labs
Business Innovation
Cours d’entreprenariat et Radar

Innovation (cadre du Doctoral Supporting innovators all the way to the market
Training Center à venir)
Business Developers ICTLabs
à votre disposition

26

Vous aimerez peut-être aussi