Vous êtes sur la page 1sur 92

MIDDLEWARE

ORIENTS
MESSAGES

I .T I S O P E N
Page 2

MOMs open source

PRAMBULE

Smile
Smile est une socit dingnieurs experts dans la mise en uvre de solutions open
source et lintgration de systmes appuys sur lopen source. Smile est membre de
lAPRIL, lassociation pour la promotion et la dfense du logiciel libre, de Alliance
Libre, PLOSS, et PLOSS RA, des associations clusters rgionaux d'entreprises du
logiciel libre.
Smile compte plus de 1200 collaborateurs dans le monde ce qui en fait le premier
intgrateur franais et europen de solutions open source.
Depuis 2000, environ, Smile mne une action active de veille technologique qui lui
permet de dcouvrir les produits les plus prometteurs de lopen source, de les
qualifier et de les valuer, de manire proposer ses clients les produits les plus
aboutis, les plus robustes et les plus prennes.
Cette dmarche a donn lieu toute une gamme de livres blancs couvrant diffrents
domaines dapplication. La gestion de contenus (2004), les portails (2005), la
business intelligence (2006), les frameworks PHP (2007), la virtualisation (2007), et
la gestion lectronique de documents (2008), ainsi que les PGIs/ERPs (2008). Parmi
les ouvrages publis en 2009, citons galement Les VPN open source , et Firewall
est Contrle de flux open source , et Middleware , dans le cadre de la collection
Systme et Infrastructure .
Chacun de ces ouvrages prsente une slection des meilleures solutions open source
dans le domaine considr, leurs qualits respectives, ainsi que des retours
dexprience oprationnels.
Au fur et mesure que des solutions open source solides gagnent de nouveaux
domaines, Smile sera prsent pour proposer ses clients den bnficier sans risque.
Smile apparat dans le paysage informatique franais comme le prestataire
intgrateur de choix pour accompagner les plus grandes entreprises dans ladoption
des meilleures solutions open source.
Ces dernires annes, Smile a galement tendu la gamme des services proposs.
Depuis 2005, un dpartement consulting accompagne nos clients, tant dans les
phases davantprojet, en recherche de solutions, quen accompagnement de projet.
Depuis 2000, Smile dispose dun studio graphique, devenu en 2007 Smile Digital
agence interactive, proposant outre la cration graphique, une expertise e marketing,
ditoriale et interfaces riches. Smile dispose aussi dune agence spcialise dans la
TMA (support et lexploitation des applications) et dun centre de formation complet,
Smile Training. Enfin, Smile est implant Paris, Lille, Lyon, Grenoble, Nantes,
Bordeaux, Poitiers, Aix-en-Provence et Montpellier. Et prsent galement en
Espagne, en Suisse, au Benelux, en Ukraine et au Maroc.

Smile Open Source Solutions dition novembre 2009


Page 3

MOMs open source

Quelques rfrences

Intranets et Extranets

Socit Gnrale - Caisse d'pargne - Bureau Veritas - Commissariat l'Energie Atomique - Visual
- CIRAD - Camif - Lynxial - RATP - Sonacotra - Faceo - CNRS - AmecSpie - INRA - CTIFL - Chteau
de Versailles - Banque PSA Finance - Groupe Moniteur - Vega Finance - Ministre de
lEnvironnement - Arjowiggins - JCDecaux - Ministre du Tourisme - DIREN PACA - SAS - CIDJ -
Institut National de lAudiovisuel - Cogedim - Diagnostica Stago Ecureuil Gestion - Prolea - IRP-
Auto - Conseil Rgional Ile de France - Verspieren - Conseil Gnral de la Cte dOr - Ipsos -
Bouygues Telecom - Prisma Presse - Zodiac - SANEF - ETS Europe - Conseil Rgional dIle de
France - AON Assurances & Courtage - IONIS - Structis (Bouygues Construction) - Degrmont Suez
- GS1-France - DxO - Conseil Rgional du Centre - Beaut Prestige International - HEC - Veolia

Internet, Portails et e-Commerce


Cadremploi.fr - chocolat.nestle.fr - creditlyonnais.fr - explorimmo.com - meilleurtaux.com -
cogedim.fr - capem.fr - Editions-cigale.com - hotels-exclusive.com - souriau.com - pci.fr - odit-
france.fr - dsv-cea.fr - egide.asso.fr - Osmoz.com - spie.fr - nec.fr - vizzavi.fr - sogeposte.fr - ecofi.fr
- idtgv.com - metro.fr - stein-heurtey-services.fr - bipm.org - buitoni.fr - aviation-register.com -
cci.fr - eaufrance.fr - schneider-electric.com - calypso.tm.fr - inra.fr - cnil.fr - longchamp.com -
aesn.fr - bloom.com - Dassault Systemes 3ds.com - croix-rouge.fr - worldwatercouncil.org -
Projectif - credit-cooperatif.fr - editionsbussiere.com - glamour.com - nmmedical.fr - medistore.fr -
fratel.org - tiru.fr - faurecia.com - cidil.fr - prolea.fr - bsv-tourisme.fr - yves.rocher.fr - jcdecaux.com
- cg21.fr - veristar.com - Voyages-sncf.com - prismapub.com - eurostar.com - nationalgeographic.fr
- eau-seine-normandie.fr - ETS Europe - LPG Systmes - cnous.fr - meddispar.com - Amnesty
International - pompiers.fr - Femme Actuelle - Stanhome-Kiotis - Gtes de France Bouygues
Immobilier - GPdis - DeDietrich - OSEO - AEP - Lagardre Active Mdia - Comexpo - Reed Midem -
UCCIFE - Pagesjaunes Annonces - 1001 listes - UDF - Air Pays de Loire - Jaccede.com - ECE
Zodiac - Polytech Savoie - Institut Franais du Ptrole - Jeulin - Atoobi.com - Notaires de France -
Conseil Rgional dIle-de-France - AMUE

Applications mtier
Renault - Le Figaro - Sucden - Capri - Libration - Socit Gnrale - Ministre de lEmploi -
CNOUS - Neopost - Industries - ARC - Laboratoires Merck - Egide - ATEL-Hotels - Exclusive Hotels
- CFRT - Ministre du Tourisme - Groupe Moniteur - Verspieren - Caisse dEpargne - AFNOR -
Souriau - MTV - Capem - Institut Mutualiste Montsouris - Dassault Systmes - Gaz de France -
CAPRI Immobilier - Croix-Rouge Franaise - Groupama - Crdit Agricole - Groupe Accueil -
Eurordis - CDC Arkhineo

Applications dcisionnelles
IEDOM Yves Rocher - Bureau Veritas - Mindscape Horus Finance Lafarge Optimus
CecimObs ETS Europe Auchan Ukraine CDiscount Maison de la France Skyrock Institut
National de lAudiovisuel Pierre Audouin Consultant Arme de lair Jardiland Saint-Gobain
Recherche Xinek Projectif Companeo MeilleurMobile.com CG72 CoachClub

Smile Open Source Solutions dition novembre 2009


Page 4

MOMs open source

Ce livre blanc
Les Middleware Orients Messages, ou MOMs , sont des outils
particulirement prcieux pour mettre en uvre des changes entre
applications de toutes natures. Comme il arrive trs souvent dans ce
qui touche aux infrastructures, les solutions open source sont
particulirement en pointe dans ce domaine. Parce que le middleware est
souvent le ciment de toute une architecture, les critres douverture, de
prennit et dindpendance sont essentiels dans le choix dun tel outil,
et personne ne souhaite dpendre, dans ce contexte, de la politique
commerciale de tel ou tel acteur particulier.

Cest pourquoi les solutions open source sont en position de force en


matire de middleware. La force de lopen source, cest aussi la diversit
et le foisonnement de loffre, dans une dynamique de comptition qui fait
natre des produits de grande qualit. Cest le cas en matire de MOM,
o il existe diffrentes solutions tout fait solides et matures.

Ce livre blanc vise prsenter loffre open source en matire de MOM.


Nous avons identifi quatre solutions qui se distinguent par leur qualit,
leur robustesse et la stature de leur diteur.

Aprs avoir prsent les concepts fondamentaux et les fonctionnalits


communes tous ces outils, nous tudierons chacun deux de manire
plus dtaille.

Smile Open Source Solutions dition novembre 2009


Page 5

MOMs open source

Sommaire
PRAMBULE......................................................................................................2
SMILE.................................................................................................................................. 2
QUELQUES RFRENCES............................................................................................................. 3
CE LIVRE BLANC...................................................................................................................... 4
SOMMAIRE............................................................................................................................. 5
CONCEPTS DES MOMS ET JMS..........................................................................7
QU'EST-CE QUUN MIDDLEWARE ?............................................................................................... 7
Pourquoi des changes asynchrones ?..................................................................................8
LES MIDDLEWARES ORIENTS MESSAGES OU MOM..........................................................................9
Dfinition................................................................................................................................ 9
MOM, EAI, ESB.................................................................................................................... 10
EDA, Event Driven Architecture...........................................................................................10
Des changes asynchrones.................................................................................................11
Des changes fiables........................................................................................................... 11
Brokers................................................................................................................................ 12
Protocoles et APIs................................................................................................................. 12
Pourquoi un MOM open source ?..........................................................................................13
Les services d'un MOM........................................................................................................ 14
JAVA MESSAGING SYSTEM OU JMS............................................................................................ 15
Introduction.......................................................................................................................... 15
Modes de communication..................................................................................................... 16
Quelques dfinitions............................................................................................................ 17
Encodage du Corps des messages......................................................................................18
La structure du message JMS..............................................................................................19
Ordre des messages............................................................................................................ 20
Dure de vie d'un message..................................................................................................21
Priorit................................................................................................................................. 21
Slection des messages....................................................................................................... 22
Aiguillage et spcialisation.................................................................................................. 23
Synthse JMS...................................................................................................................... 24
CARACTRISTIQUES PRINCIPALES DES MOM....................................................................................25
Langages d'implmentation, APIs et environnements supports.........................................25
Protocoles............................................................................................................................. 27
Traitement des messages par le MOM.................................................................................28
Gestion des transactions..................................................................................................... 29
Dead Message Queue.......................................................................................................... 31
Persistance des messages................................................................................................... 32
FONCTIONNALITS AVANCES...................................................................................................... 34
Code gnrique et JNDI....................................................................................................... 34
Enterprise Integration Patterns............................................................................................35
Interoprabilit entre MOMs.................................................................................................36
Passerelle base dESB...................................................................................................... 37
Gestion de la scurit.......................................................................................................... 39
Administration et monitoring................................................................................................ 40
Configuration et dploiement............................................................................................... 40
Rpartition de charge applicative.........................................................................................40
Topologie et rseau de brokers............................................................................................ 41
Tolrance aux pannes.......................................................................................................... 45
Auto-dcouverte................................................................................................................... 46

Smile Open Source Solutions dition novembre 2009


Page 6

MOMs open source

LES MOMS OPEN SOURCE...............................................................................48


LES MOMS TUDIS.............................................................................................................. 48
JORAM.......................................................................................................................... 48
Prsentation......................................................................................................................... 48
Caractristiques principales du produit...............................................................................48
Dtail sur le projet................................................................................................................ 55
ACTIVE MQ......................................................................................................................... 57
Prsentation......................................................................................................................... 57
Caractristiques principales du produit...............................................................................57
Gestion des messages......................................................................................................... 59
Traitement des messages.................................................................................................... 60
Gestion des transactions..................................................................................................... 61
Persistance des messages................................................................................................... 61
Rpartition de charge et haute disponibilit multi-site.........................................................62
Interoprabilit avec d'autres MOMs....................................................................................64
Gestion de la scurit et d'un annuaire...............................................................................64
Administration..................................................................................................................... 65
Configuration et dploiement............................................................................................... 66
Dtail sur le projet................................................................................................................ 66
MOM OPEN MESSAGE QUEUE (OMQ).......................................................................................68
Prsentation......................................................................................................................... 68
Caractristiques principales du produit...............................................................................68
Dtail sur le projet................................................................................................................ 73
MOM JBOSS MESSAGING (JBM)............................................................................................. 74
Prsentation......................................................................................................................... 74
Caractristiques principales du produit...............................................................................74
Dtail sur le projet................................................................................................................ 79
COMPARATIF...................................................................................................81

BENCHMARK DE DBIT...................................................................................84
Scnario de test................................................................................................................... 84
Ralisation du test............................................................................................................... 84
Configuration....................................................................................................................... 84
La machine.......................................................................................................................... 85
Rsultats du test.................................................................................................................. 85
Active MQ avec Persistance.................................................................................................86
Active MQ, sans Persistance (volatile)..................................................................................86
Joram avec Persistance....................................................................................................... 87
JORAM sans Persistance (volatile).......................................................................................87
Analyse................................................................................................................................ 88
SYNTHSE.......................................................................................................90

Smile Open Source Solutions dition novembre 2009


Page 7

MOMs open source

CONCEPTS DES MOMS ET JMS

Qu'est-ce quun Middleware ?


Un middleware est un logiciel qui permet diffrentes applications
dchanger et d'interoprer.

Un middleware permet aux applications d'interoprer y compris


lorsqu'elles tournent sur des serveurs diffrents, interconnects par un
rseau. Le middleware est un outil de haut niveau, puisquil offre ses
services aux applications, mais les changes induits sappuient sur toute
une pile de protocoles rseau.

Par exemple, les outils qui permettent des applications d'invoquer les
services d'un SGBD sont une catgorie particulire de middlewares.

Parmi les middlewares qui permettent l'interoprabilit entre applications


homologues (de mme nature), on peut distinguer deux grandes familles:

Les middlewares qui permettent l'invocation synchrone de


fonctions et mthodes, parmi lesquels on trouve la famille des
request brokers, avec CORBA ou encore DCOM.

Les middlewares d'change asynchrones, qui sont


principalement base de messages, ce sont les MOMs, les
Message Oriented Middleware.

Un middleware est davantage qu'un simple protocole d'appel des services


offerts par une application, et typiquement RPC, RMI ou bien SOAP, tous
galement synchrones, ne sont pas vraiment considrs comme des
middlewares.

Smile Open Source Solutions dition novembre 2009


Page 8

MOMs open source

Outre la gestion de lchange proprement dit, les services offerts par un


middleware peuvent tre de diffrentes natures, en particulier:

L'identification et la localisation des applications un niveau


suprieur, au dessus des adresses rseau et des noms de
serveurs, et l'acheminement des changes ce niveau.

Dans certains cas, la conversion de formats de reprsentation des


donnes entre les applications, permettant des applications
d'environnements et langages diffrents d'changer de manire
transparente.

Dans certains cas galement, des fonctions de scurit, de


rpartition de charge ou de gestion du secours.

Pourquoi des changes asynchrones ?


Lorsqu'une application invoque les services d'une autre application au
moyen d'un middleware synchrone, il faut imprativement :

que la seconde application soit en tat de marche, linstant o elle


est invoque ;

qu'elle soit joignable par le rseau.

Si l'une ou l'autre de ces conditions n'est pas runie, la premire


application doit renoncer invoquer le service distant. Dans certains
cas, cette impossibilit peut avoir des consquences graves pour
l'application initiatrice de lchange, qui doit tre prvue pour traiter
lchec de lappel. L'invocation synchrone d'un service distant cre une
dpendance trs forte entre les deux applications.

Smile Open Source Solutions dition novembre 2009


Page 9

MOMs open source

Et quand bien mme ces deux conditions sont runies, la question se


pose encore du temps de rponse de cet appel de service. L'application
appelante peut-elle rester en attente de la rponse ? Peut-elle faire
attendre un utilisateur ? Aprs combien de temps doit-elle renoncer ?

Dans certains contextes, les changes synchrones sont possibles. En


particulier lorsque les deux applications sont sur le mme serveur, ou
la rigueur sur la mme plateforme, et que leurs temps de rponse
peuvent tre garantis.

Dans tous les autres cas, la dpendance qu'implique un mode dchange


synchrone, tant au niveau des applications elles-mmes que des
serveurs, est nfaste.

Au contraire, avec un middleware asynchrone, lapplication initiatrice de


lchange ne reste pas en attente dune rponse : elle confie son message
au middleware et poursuit sont traitement.

On dit qu'un middleware asynchrone met en uvre une faible


dpendance, un couplage lche ( loose coupling ), entre les applications,
ce qui permet une bien plus grande flexibilit dans les architectures.

Les Middleware Orients Messages, ou MOM, sont de loin les


implmentations les plus courantes du principe d'changes asynchrones
et, comme nous le verrons, il existe un standard en la matire, la
spcification JMS, qui a un bon nombre d'implmentations de qualit.

Les Middlewares Orients Messages ou


MOM

Dfinition
On la vu, les MOMs sont des middlewares, des outils dchange qui
permettent des applications de communiquer en changeant des
messages. Une application A doit adresser un message une
application B , qui tourne (peut-tre) sur un serveur diffrent.
Lapplication A confie son message au MOM, qui se charge de
lacheminer et de le remettre lapplication B .

Lobjet vhicul par le MOM entre deux applications est appel message.
Mais rien nest impos quant ce que reprsente ce message, sa taille, ou
encore le format des donnes quil vhicule. Pour lessentiel, ces
questions ne concernent que lapplication A et lapplication B , qui
doivent partager un certain nombre de conventions, afin de se
comprendre.

Le MOM, quant lui, ne sintresse donc pas au contenu du message, il


ne fait que le transmettre, et il le remet au destinataire sans y avoir
apport de changement.

Smile Open Source Solutions dition novembre 2009


Page 10

MOMs open source

MOM, EAI, ESB


la diffrence dun MOM, un outil dEAI (Enterprise Application
Integration), est aussi en charge de raliser transformations sur les
informations portes par les messages, afin dadapter les donnes de
lmetteur aux formats grs par le destinataire.

Un EAI englobe donc les fonctionnalits du MOM, et y ajoute des


possibilits facilitant lintgration des applications au niveau des
donnes transfres.

Dans un MOM, comme on l a vu, les applications doivent parler le mme


langage, tandis quun EAI au contraire prend en charge les traductions
entre reprsentations diffrentes.

Un EAI est donc un middleware qui a comme principales fonctions :


Linterconnexion des systmes htrognes.
La gestion de la transformation des messages.
La gestion du routage des messages.

LESB, Enterprise Service Bus, est un concept plus ambitieux encore, qui
se prsente comme le socle uniforme dune architecture SOA globale. L
o lEAI peut prendre en charge des transformations de formats
permettant une application A dinteroprer avec une application B,
lESB gnralise le concept, en posant pour principe quil suffit quune
application A soit interface lESB pour quelle puisse interoprer par
son intermdiaire avec toute autre application interface lESB. Et par
ailleurs, la connexion lESB nest pas exclusivement base de
messages, elle doit supporter une grande diversit de modes dchange et
de protocoles.

EDA, Event Driven Architecture


Puisque nous voquons quelques acronymes en vogue, il faut parler
aussi du concept EDA, Event-Driven Architecture , architecture pilote
par les vnements, qui est certains gards une alternative l'approche
SOA.

L'approche EDA part de l'ide que tout traitement est d'une certaine
manire excut en raction un vnement. Et bien sr, tout
traitement est par ailleurs gnrateur d'vnements. Ainsi, la vente d'un
produit est un vnement, qui induit un ensemble de traitements relatifs
par exemple la gestion des stocks, la comptabilit, la logistique, la
relation client, etc. Tout est vnement, tout est raction des
vnements, et il en va de mme pour nous-mmes, tres humains, qui
agissons en raction un ensemble de stimuli externes.

Dans l'approche EDA, la raction un vnement n'est pas un


traitement synchrone. Elle peut avoir des exigences de rapidit, mais

Smile Open Source Solutions dition novembre 2009


Page 11

MOMs open source

elle est par essence asynchrone. Alors que l'approche SOA, mme si elle
peut se dcliner dans une logique asynchrone, est malgr tout par
essence une approche synchrone. Et bien sr, les MOMs sont le
support naturel d'une approche EDA.

Un dernier acronyme trois lettres pour la route: CEP, pour Complex


Event Processing , traitement d'vnements complexes, consiste
identifier, puis traiter, des vnements complexes partir d'une
combinaison d'vnements simples. C'est donc un concept
complmentaire l'approche EDA, partant du principe qu'il ne suffit pas
de ragir des vnements individuels, il faut tre en mesure d'identifier
des vnements de plus haut niveau, comme rsultante d'vnements
lmentaires. Par exemple: un ordre de vente, plus un autre ordre de
vente, plus encore un ordre de vente... gal une crise financire,
vnement complexe, s'il en est !

Des changes asynchrones


Les changes de messages mis en uvre par les MOMs sont
asynchrones. Cela signifie que les applications ne sont pas en attente
dune rponse leur message. En fait, il est possible quun message de
rponse soit attendu, mais dans ce cas il ny a pas de dlai garanti pour
cette rponse, de sorte que lapplication ne doit pas se bloquer en attente
de la rponse, et encore moins faire attendre un utilisateur. Le caractre
asynchrone ne dit rien quant au dlai dacheminement du message : il
peut tre trs rapide, de quelques millisecondes peine, mais il ne doit
pas tre considr comme assur.

Des changes fiables


Lune des qualits attendues des MOMs est de garantir lacheminement
des messages quelles que soient les circonstances, les alas, et en
particulier y compris dans le cas o la connectivit rseau est
interrompue, o le serveur distant est arrt, ou bien o lapplication
destinatrice nest pas en mesure de rceptionner les messages. Dans
tous ces cas de figure, le MOM doit conserver les messages qui lui sont
confis jusqu ce quils aient t remis, et mme, jusqu ce quils aient
t correctement traits par lapplication destinatrice.

Nous verrons que cette fiabilit de l'acheminement peut tre rendue plus
ou moins forte, selon les paramtres et la configuration du MOM.

Les changes base de MOM ne sont pas, par nature, en mode requte /
rponse, comme peut ltre un change HTTP par exemple. Il est
possible bien sr que lapplication destinatrice mette son tour un
message, que lon peut considrer comme une rponse, mais il sagit
alors seulement dune utilisation particulire du MOM.

Smile Open Source Solutions dition novembre 2009


Page 12

MOMs open source

Brokers
Les brokers sont des programmes grant le flux de messages. En d'autres
termes, un MOM est compos d'un ou de plusieurs brokers. Comme le
montre la figure suivante, c'est avec les brokers que les applications
clientes communiquent, au travers de lAPI.

Un broker est un serveur au sens logiciel du terme, c'est--dire un


processus qui est lcoute des requtes qui peuvent lui tre adresses
par dautres processus, les applications clientes.

Une plateforme MOM ou plateforme middleware est donc constitu dun


ensemble des brokers et des passerelles.

Protocoles et APIs
Lorsquune application change avec un broker, par exemple pour lui
remettre un message, et de mme lorsquun broker change avec un
autre broker, ces changes mettent en uvre un protocole rseau. Le
protocole dfinit les commandes invoques et leurs paramtres, ainsi que
la reprsentation des donnes, enttes et corps, constituant les
messages.

Smile Open Source Solutions dition novembre 2009


Page 13

MOMs open source

Ce protocole est gnralement invisible pour les applications, qui ne


voient que des appels de fonctions, des APIs. Et de mme, pour ce qui
est des changes entre deux brokers dun mme MOM, le protocole peut
tre considr comme une affaire prive, interne, relevant purement de
limplmentation du MOM. Cest pourquoi on sintresse gnralement
davantage louverture des MOMs en termes dAPIs quen termes de
protocoles dchange.

Pourquoi un MOM open source ?


Un middleware est ncessairement structurant pour les applications qui
en font usage, c'est--dire que les applications seraient un peu
diffrentes si elles utilisaient un autre middleware, et en consquence,
changer de middleware pourrait impliquer des changements sur toutes
les applications, avec donc un cot important.

En consquence, il est clair que l'on ne souhaite pas avoir changer de


middleware, et qu'il vaut mieux viter aussi d'avoir un fournisseur en
position de tirer profit de cette dpendance.

C'est une des raisons pour lesquelles les solutions open source sont
naturellement privilgier pour cette typologie d'outils.

Et c'est pourquoi aussi les grands acteurs de l'open source ont depuis
longtemps plac les middleware au premier rang de leurs priorits, ce qui
explique que l'on ait aujourd'hui un large choix de produits de qualit,
comme on le verra.

Il faut rendre Csar ce qui appartient Csar , et rappeler que le pre


de tous les MOMs est sans doute le produit MQSeries, de IBM,
aujourd'hui renomm Websphere MQ , un produit introduit dans les
annes 90, et qui a rencontr un grand succs en particulier dans les
banques et autres grands comptes IBM. MQSeries a pos les concepts
du MOM, changes asynchrones et fiables, en offrant par ailleurs des
connecteurs pour une diversit d'environnements.

Smile Open Source Solutions dition novembre 2009


Page 14

MOMs open source

Aujourd'hui, les solutions open source sont en position de force. Elles


sont gnralement plus respectueuses des standards, plus ouvertes, et
pour certaines d'entre elles au moins plus dynamiques dans leur
dveloppement. Et elles prsentent un cot total de possession bien plus
avantageux.

Les services d'un MOM


Le service de base d'un MOM est d'acheminer un message d'une
application vers une autre.

Mais il a d'autres valeurs ajoutes, dautres caractristiques :

Un service fiable

Le MOM garantit l'application A que le message qui lui est confi ne


sera pas perdu. Ceci, mme en prsence d'incidents de diffrentes
natures (logiciels, matriel, rseau). L'application mettrice peut compter
sur le MOM, et le fait de pouvoir compter sur lui permet de simplifier la
conception de l'application. On peut, diffrents gards, faire un
parallle entre un MOM et une base de donnes. Lorsqu'une application
a crit une donne dans un SGBD, elle peut compter que cette donne ne
sera pas perdue. Les mcanismes qui permettent d'assurer ceci peuvent
tre complexes, mais l'application n'a pas s'en proccuper. C'est la
mme chose pour un MOM. Le MOM peut donc tre utilis y compris
pour transporter des objets critiques, des transactions financires par
exemple. Nous verrons plus loin que l'on peut, dans certains contextes
d'utilisation, choisir de se passer de cette fiabilit.

Un service asynchrone

L'application A confie son message au MOM, destination de


l'application B. Mais l'application B est peut-tre sature, ou bien
arrte, son serveur est peut-tre en panne, ou bien injoignable. Rien de
tout cela ne pose problme: le MOM attendra. Que le rseau remarche,
que le serveur soit en tat, que l'application soit lance. Il attendra
jusqu' avoir pu remettre le message son destinataire. Et mme un
peu plus: jusqu' ce que son destinataire ait indiqu que le message a
pu tre trait avec succs.

Une indirection de nommage

Nous avons jusqu'ici fait comme si l'application A remettait au MOM un


message destination de l'application B . Ce n'est pas tout fait exact,
et la nuance est importante. L'application A remet au MOM un message
destination d'une file d'attente, d'une queue. Et une application B
(mais peut-tre aussi diffrentes applications B1, B2, ) peut lire les
messages de cette queue, selon des modalits que nous verrons plus en
dtail. Cette indirection est importante: lapplication A ne connait pas

Smile Open Source Solutions dition novembre 2009


Page 15

MOMs open source

l'application B, ne connait ni son nom , ni le serveur sur lequel elle


tourne, ni dans quel sous-rseau ce serveur peut se trouver. Nanmoins,
le message sera remis l'application B. On voit que le principe de
couplage lche n'est pas que dans le caractre asynchrone, il est
important galement en ce qui concerne l'identification des applications
prenant part aux changes.

Pas de transformation des donnes

la diffrence d'autres middleware, et en particulier la famille des ORB,


les MOMs ne prennent pas en charge de transformation de la
reprsentation des donnes. Le MOM reoit un message d'une
application A, et le remet tel quel, inchang, une application B. Les
applications changeant grce au MOM doivent donc parler le mme
langage , c'est--dire reprsenter leurs objets (chanes, nombres,
matrices, classes, dates, etc.) de la mme manire, au sein des messages,
pour se comprendre.

Autres services

Nous verrons que la gestion de la rpartition de charge et la gestion du


secours sont extrmement faciles mettre en uvre au moyen d'un
MOM. La possibilit d'avoir plusieurs applications lisant et traitant les
messages sur une mme queue, implmente une rpartition de charge
trs simple, mais trs efficace.

Java Messaging System ou JMS

Introduction
JMS est l'API de communication asynchrone via Message de Java. Cest
lAPI qui permet une application dinvoquer les services dun MOM.

JMS fait partie de JEE 5 et est ainsi disponible aux applications tournant
sur des serveurs applicatifs Java.

La premire version de JMS, JMS 1.0.2b est sortie le 25juinn 2001. La


seconde version, JMS 1.1 est sortie le 18 mars 2007, sans prsenter de
diffrence importante. Les classes JMS 1.1 permettent de raliser des
clients JMS plus facilement. Nous allons tudier sommairement JMS 1.1.
Mais nous commencerons par poser quelques dfinitions et concepts.

Comme toute spcification, JMS doit assurer que toutes les applications
qui sy conforment ont le mme comportement quel que soit le
fournisseur de limplmentation. La JMS laisse aussi dans des cas bien
dfinis, la libert aux fournisseurs d'implmenter ou non certaines
fonctionnalits. Nous reviendrons en dtail sur ces fonctionnalits qui
distinguent les diffrents MOMs.

Smile Open Source Solutions dition novembre 2009


Page 16

MOMs open source

Comme JDBC pour laccs aux bases de donnes, ou JCR pour laccs
un rfrentiel de contenus, JMS permet en thorie de dvelopper une
application interface un MOM, sans dpendre dun produit particulier.
C'est--dire quil devrait tre possible de remplacer un MOM JMS par un
autre de manire transparente pour lapplication. Comme pour les accs
aux bases de donnes, cet aspect interchangeable nest pas toujours
vrifi en pratique. Il peut exister des petites diffrences
dimplmentation de la spcification, et par ailleurs les diffrents outils
MOMs sefforcent doffrir des petits plus , des fonctionnalits
diffrenciantes.

Modes de communication
La spcification JMS introduit deux modes de communication, les
domaines JMS : les topics d'une part, les queues d'autre part..

Le mode point point ou queue

Ce mode de communication est aussi appel communication via queue.


Une application envoie des messages une queue. Une seule des
applications connectes reoit le message. Il peut y avoir plusieurs
applications en lecture sur la queue, mais une seule dentre elles recevra
le message.

Le mode publish-subscribe ou topic

Ce mode de communication est aussi appel communication via topic.


Une application envoie des messages des topic.

Dans ce mode, on dit que les applications s'abonnent (subscribe) un


topic, afin de recevoir les messages. Plusieurs applications peuvent tre
abonnes un mme topic, et chacune d'elles reoit une copie des
messages.

la manire de la diffusion dun magazine par exemple, lmetteur publie


un message, et les diffrents destinataires sabonnent pour recevoir une
copie du message.

Smile Open Source Solutions dition novembre 2009


Page 17

MOMs open source

Cest donc un change de 1 vers N, mais qui peut tre aussi bien de P
vers N , car plusieurs applications peuvent crire dans le topic.

Queues et topics

On voit bien les diffrences dusage de ces deux modes. Dans le mode
queue, on peut imaginer quun message reprsente une unit de
traitement. Lapplication destinatrice reoit le message et effectue un
traitement partir du message, et dans ce cas il faut que le traitement ne
soit pas excut deux fois. Dans le mode topic, on peut voir le message
plutt comme une unit dinformation, qui peut intresser diffrents
acteurs, diffrentes applications. Par exemple, un ordre de bourse sera
une unit de traitement, tandis quun cours de bourse sera une
information.

Queue et Topic sont regroups sous le nom de Domaine . Ainsi,


envoyer un message un domaine quivaut envoyer un message
une queue ou un topic .

Quelques dfinitions
JMS introduit diffrents termes et concepts que nous allons rapidement
parcourir:

JMS Client

Un client JMS est une application crite en Java envoyant et/ou recevant
des messages au moyen de lAPI JMS.

Non-JMS Client

Un client non-JMS est une application envoyant et/ou recevant des


messages en communiquant avec le JMS Provider selon son protocole
particulier, soit en direct, soit par lintermdiaire des fonctions dune API.
Cette application n'est pas crite en Java.

Smile Open Source Solutions dition novembre 2009


Page 18

MOMs open source

JMS Provider

Un Fournisseur JMS est une implmentation des services JMS crite en


Java. Ainsi,i les MOMs que nous tudierons plus loin sont des JMS
Providers.

JMS Consumer

Un Consommateur JMS est une application qui reoit et traite des


messages JMS.

JMS Producer

Un Producteur JMS est une application qui cre et envoie des messages
JMS. Une mme application peut tre la fois JMS Producer et
Consumer.

JMS Message

Le message JMS est l'unit fondamentale de JMS. Il est envoy et reu


par des Client JMS.

JMS Domains

Les deux domaines JMS correspondent aux deux modes de


communication dj voqus : point point avec les queues ou publish-
subscribe avec les topics.

Destination

Les objets destinations sont des objets servant identifier la cible des
messages envoyer ou recevoir, c'est--dire des domaines, queues et
topics.

Encodage du Corps des messages


Mme si le contenu et le format du corps sont fondamentalement laffaire
des applications, JMS aide les applications manipuler certains types
dobjets en fournissant diffrents types de corps de message.

Le corps des messages peut tre encod selon les 5 Message Types
disponibles :

TextMessage : Le corps contient des caractres.


StringstockData;
TextMessage message;
message = session.createTextMessage();
message.setText(stockData);
String stockInfo; /* String to hold stock info */

Smile Open Source Solutions dition novembre 2009


Page 19

MOMs open source

stockInfo = message.getText();

BytesMessage : Le corps contient une suite de bytes, selon le


langage Java
byte[]stockData; /* Stock information as a byte array */
BytesMessage message;
message = session.createBytesMessage();
message.writeBytes(stockData);
byte[]stockInfo; /* Byte array to hold stock information */
int length;
length = message.readBytes(stockData);

MapMessage : Le corps contient une map. Une map est un type


de donnes reliant une clef (code en String) a une valeur (code
en String, Double ou Long)
message = session.createMapMessage();
/* First parameter is the name of the map element, * second is the value
*/
message.setString("Name", "SUNW");
message.setDouble("Value", stockValue);
message.setLong("Time", stockTime);
message.setDouble("Diff", stockDiff);
message.setString("Info", "Recent server announcement causes market
interest");
stockName = message.getString("Name");
stockDiff = message.getDouble("Diff");
stockValue = message.getDouble("Value");
stockTime = message.getLong("Time");

StreamMessage

Ce type permet de concatner plusieurs type natif (String, Double ou


Long).
/* Create message */ message = session.createStreamMessage();
/* Set data for message */
message.writeString(stockName); message.writeDouble(stockValue);
message.writeLong(stockTime);
message.writeDouble(stockDiff);
message.writeString(stockInfo);

stockName = message.readString();
stockValue = message.readDouble();
stockTime = message.readLong();
stockDiff = message.readDouble();
stockInfo = message.readString();

ObjectMessage : Ce type permet de transfrer un objet java.


ObjectMessage message = session.createObjectMessage();
message.setObject(myObject);

La structure du message JMS


Le message manipul par le MOM JMS est compos des parties
suivantes:

Smile Open Source Solutions dition novembre 2009


Page 20

MOMs open source

Une entte, qui a la mme structure pour tous les messages, et


contient principalement les champs ncessaires l'identification
et au routage du message.

Des proprits, qui viennent en quelque sorte complter l'entte,


avec des attributs spcifiques, soit dfinis par le MOM en
complment de l'entte minimale JMS, soit dfinis par
l'application pour ses besoins particuliers.

Le corps du message, qui peut avoir diffrents formats: texte, objets


Java ou donnes XML.

Les principaux champs de l'entte sont:

JMSMessageID : identifiant unique du message

JMSDestination : identification de la queue ou du topic destinataire


du message

JMSCorrelationID : utilis pour synchroniser de faon applicative


deux messages de la forme requte/rponse. Dans ce cas, dans le
message rponse, ce champ contient le messageID du message
requte

Selon limage habituelle, lentte correspond ce qui est crit sur


lenveloppe, le corps correspond ce qui est dans lenveloppe. Le MOM
ne lit et nutilise que les donnes de lentte, y compris les proprits.
Ainsi, la slection de messages, que l'on verra plus loin, peut dpendre de
ces proprits, mais non du corps du message.

Ordre des messages


Le MOM garantit qu'un message sur une queue sera remis au plus une
fois, mais il ne garantit pas que les messages seront remis dans l'ordre
dans lequel ils ont t mis.

En fait, il y a presque une impossibilit thorique garantir l'une et


l'autre de ces deux proprits: la remise unique, et la remise ordonne.
En effet, un consommateur peut lire un message, et ne l'acquitter que
longtemps aprs. Si le consommateur n'acquitte pas, le message doit
tre recycl. Ainsi pour assurer la remise ordonne, le MOM devrait
attendre que tous les messages jusqu' N aient t non seulement reus,
mais acquitts, avant de livrer un message N+1, ce qui aurait un effet
catastrophique sur les performances.

Nous verrons plus loin que les MOMs permettent une gestion des
transactions, qui permet en quelque sorte dannuler des oprations qui
nont pas encore t valides, commites, en ordonnant un retour arrire,
un rollback. Voir Gestion des transactions , page 29.

Smile Open Source Solutions dition novembre 2009


Page 21

MOMs open source

La figure suivante montre comment un rollback, soit explicite, soit


implicite, c'est--dire provoqu par la fermeture de session, oblige
recycler un message alors que les suivants ont dj t dlivrs.

Dure de vie d'un message


L'application mettrice peut spcifier la dure de vie du message. Le
message est donc 'valable' jusqu' l'expiration de cette dure, au-del le
MOM peut le dtruire sans l'avoir remis. La plupart des MOMs
choisissent plutt de l'aiguiller vers la Dead Message Queue, qui
permettra de garder la trace de l'vnement, et de recycler le message le
cas chant.

noter que si l'on est dans le contexte d'une transaction, la dure de vie
dmarre quand mme l'instant d'mission, et non linstant du commit.

Priorit
Une fonctionnalit optionnelle, mais utile, propose par le JMS, est la
gestion des priorits, c'est--dire que la dlivrance des messages
seffectue selon leur priorit.

Un message de plus haute priorit peut donc doubler un message de


moindre priorit, pour autant que celui-ci nait pas encore t lu.

Smile Open Source Solutions dition novembre 2009


Page 22

MOMs open source

Remarquons que JMS 1.1 n'oblige pas les fournisseurs implmenter


cette fonctionnalit.

Slection des messages


JMS prvoit que les applications clientes ont la possibilit de slectionner
les messages qu'elles lisent, sur la base des champs d'entte et de
proprits. On voit bien sr que, sil y a slection, les messages ne
seront forcment pas dlivrs dans l'ordre.

La slection des messages est dfinie dans JMS 1.1, elle est donc offerte
par tous les MOMs tudis. La syntaxe est inspire du SQL, elle peut
faire intervenir diffrents oprateurs de comparaison, d'expressions
logiques, et mme des oprations arithmtiques.

titre d'exemple, imaginons une application qui communique avec une


queue et lui envoie des messages avec les proprits suivantes :
JMSType, market et amount. Une application cliente ne souhaitant
obtenir que les oprations sur le march Euronext dont le montant est
infrieur 1 000 000 , appliquera le selector suivant : JMSType = 'order'
AND market = ''Euronext' AND amount < 1000000.

Certains MOMs peuvent accepter d'autres types de syntaxe, qui ne sont


pas requis par JMS 1.1, typiquement Xpath. Mais dans tous les cas, la
slection porte sur entte et proprits, et non sur le corps du message.

Smile Open Source Solutions dition novembre 2009


Page 23

MOMs open source

Aiguillage et spcialisation
On peut donc mettre en uvre, au moyen de la slection, une
spcialisation des consommateurs. En fait, dans une logique
d'affectation et de rpartition de tches, on peut distinguer trois
techniques:

L'application mettrice, producer, place des messages dans des


queues diffrentes selon la nature de la tche effectuer. Et une
application spcifique est en lecture sur chacune des queues.

L'application mettrice place les messages dans une queue unique,


mais la queue est ensuite clate en plusieurs queues, ceci soit
au moyen d'une application relais jouant un rle d'aiguillage, soit
au moyen d'un traitement d'aiguillage, si le MOM le permet.

Smile Open Source Solutions dition novembre 2009


Page 24

MOMs open source

L'application mettrice place les messages dans une mme queue,


et les applications consumer slectionnent les messages selon
leur spcialisation. Ici Consumer C1 prend les messages
jaunes, C2 les messages bleus, C3 les messages violets.
Lapplication producer na pas connatre cette rpartition.

Trois manires de grer peu prs le mme problme, diffrents


niveaux. Dans le premier cas la logique d'aiguillage est intgre au
producer, dans le dernier cas, elle relve du consumer, et dans le cas
intermdiaire, elle est dporte dans une application ddie.

Synthse JMS
JMS est une API, et cette API correspond des services d'change entre
des producteurs et des consommateurs de messages, sappuyant sur des
concepts que nous avons prsents. Au-del de lAPI donc, JMS dfinit
les fonctionnalits centrales des MOMs.

JMS spcifie le service, mais ne spcifie pas comment ce service est mis
en uvre. Chaque fournisseur, JMS Provider, est libre de ses choix
dimplmentation.

Comme on la vu plus haut, les protocoles dchanges peuvent galement


tre considrs comme des choix dimplmentation propres certains
MOMs, mme si nous considrons quils ont une relle importance.

La spcification JMS n'est pas en tous points complte. Certaines


fonctions essentielles au fonctionnement d'une plateforme MOM ne sont
pas dcrites dans la spcification et font donc l'objet d'implmentations
particulires. C'est le cas en particulier pour la configuration et
l'administration du service de messagerie, pour la scurit (intgrit et
confidentialit des messages) et pour certains paramtres de qualit de
service.

Smile Open Source Solutions dition novembre 2009


Page 25

MOMs open source

Par ailleurs, la plupart des MOMs proposent des fonctions additionnelles


qui se prsentent comme des atouts spcifiques par rapport aux offres
concurrentes (par exemple les topics hirarchiss, des fonctions de
scurit et des mcanismes de haute disponibilit, etc.). Bien sr, la
mise en uvre de ces fonctionnalits se fait au dtriment de la capacit
changer de MOM, en respectant lAPI JMS.

Comme dautres spcifications dinterface, comme le SQL par exemple, la


promesse de pouvoir changer dimplmentation de MOM JMS de manire
transparente, nest pas facilement tenue. Mais ce nest pas trs grave.
La spcification commune apporte dj le bnfice dune communaut de
vision, dapproches, et de comptences. Un architecte peut raisonner sur
la base dun MOM sans savoir ncessairement de quelle marque il
sera, et un dveloppeur qui a pratiqu JMS avec un premier MOM,
pourra presque immdiatement en pratiquer un second.

Caractristiques principales des


MOM
Nous parcourons ici les principales classes de fonctionnalits offertes par
les MOMs, en identifiant les possibilits communes tous les outils, et
celles qui sont plus spcifiques.

Langages d'implmentation, APIs et environnements supports.


Les MOMs open source que nous tudions ici sont tous cods en Java.
Nous ne les avons pas slectionns sur ce critre, mais il se trouve que
tous les diteurs concerns ont fait ce choix. Il est assez naturel
puisque le MOM doit souvent sinsrer dans un environnement
htrogne, en termes de systmes dexploitation et de serveurs. La
portabilit est donc primordiale, et elle est lun des atouts majeurs de
lenvironnement Java. Sajoute cela, la disponibilit dans cet
environnement de librairies puissantes et prouves, pour les
fonctionnalits fondamentales en matire de rseau, de scurit, daccs
des bases de donnes, de gestion transactionnelle, etc.

Cela dit, le langage dans lequel le MOM lui-mme est cod pourrait tre
dune importance secondaire. De mme quil importe peu de savoir dans
quel langage MySql est cod, du moment que nous pouvons en invoquer
les fonctionnalits depuis divers environnements. Ce qui importe pour
les applications, cest la disponibilit dAPIs, de fonctions ou mthodes
qui peuvent tre appeles pour invoquer les services du MOM.

Mais certains MOMs se sont largement focaliss sur lenvironnement


Java, y compris pour les APIs, c'est--dire quils noffrent pas dAPIs pour
dautres environnements. Cest, selon nous, un handicap majeur, car la
capacit relier des applications diverses, grer lhtrognit, est
prcisment une des finalits du MOM. Sil ne peut tre mis en uvre
quentre des applications Java, il perd une partie de son utilit.

Smile Open Source Solutions dition novembre 2009


Page 26

MOMs open source

Lorsque le MOM offre des APIs pour dautres environnements que Java,
elles se prsentent sous la forme de librairies de fonctions dans
lenvironnement cible, par exemple en C ou en PHP.

La figure suivante permet de bien distinguer ces notions:

L'API proprement dite, qui est l'interface appele par l'application.

Les librairies du provider, invoques par cet API, reprsentes ci-


dessous en tant que JMS Provider API

Le Broker, qui est un processus indpendant de l'application, en


charge de la gestion des messages.

Les fonctions de la librairie JMS changent avec le broker par un


protocole rseau.

L'change peut impliquer plusieurs brokers, qui changent entre eux. Le


protocole interne du MOM, entre brokers, peut tre le mme, ou bien
diffrer du protocole externe.

Rappelons que, par dfinition, JMS est une API pour l'environnement
Java. Dans les exemples prcdents, les applications sont donc
ncessairement Java.

Si le protocole d'change avec le broker est standard, une application


peut, thoriquement, changer directement avec le broker, sans passer
par une librairie de fonctions. Il suffit quelle respecte le protocole
dchange avec le broker. Mais mettre en uvre un protocole rseau est

Smile Open Source Solutions dition novembre 2009


Page 27

MOMs open source

assez complexe, et source derreurs, de sorte que ce nest pas le rle


dune application en gnral.

Sur lexemple ci-dessus, on est en environnement htrogne : certaines


applications invoquent le MOM via les APIs fournies, tandis que
lapplication bleue change directement avec le broker selon le protocole
rseau.

Des APIs peuvent tre fournies pour dautres environnements que JEE,
par exemple C++, PHP, .Net, Ruby, Perl. Plus la liste de langages grce
auxquels on peut accder au MOM est grande, meilleures sont les
possibilits d'intgration.

Protocoles
Lorsquune application appelle une API pour invoquer le MOM, la
fonction dAPI prend en charge lchange avec un broker du MOM.

Lchange entre lapplication et le broker implique un protocole. Le


protocole dfinit comment les services du MOM seront spcifis, leurs
paramtres, et le format des messages. Par exemple, le protocole doit
spcifier que le nom dune queue de message est reprsent par une
chane de caractres cods en UTF8.

On peut distinguer des protocoles externes, entre application et brokers,


et des protocoles internes, entre brokers.

Il existe deux standards en matire de protocole MOM : AMQP (Advanced


Message Queuing Protocol) et STOMP. On les appelle des wire-level
protocols (protocoles filaires), dans le sens o ils sont en charge de grer
les changes sous la forme dune suite doctets transmis.

Comme toujours en matire de communication rseau, on a affaire une


pile de protocoles, c'est--dire que le protocole du MOM sappuie lui-

Smile Open Source Solutions dition novembre 2009


Page 28

MOMs open source

mme sur des couches de protocoles infrieures. Ainsi, STOMP peut


sappuyer, la manire du HTTP, sur une pile TCP/IP. On appelle
support de communication logique le protocole de transmission du
message, par exemple STOMP dans lexemple prcdent.

Le schma prcdent fait apparatre un exemple de pile de protocoles.


Les diffrentes flches horizontales reprsentent les changes virtuels,
aux diffrents niveaux : au niveau le plus haut, une application change
avec une autre, en fait le broker dun JMS provider change avec son
homologue. Les messages descendent puis remontent la pile des
protocoles, comme classiquement.

Notons que du ct des MOMs, on parle souvent de connecteurs pour


parler des diffrents protocoles.

Traitement des messages par le MOM


La fonction naturelle, essentielle, d'un MOM nest pas d'effectuer des
traitements sur les messages qui lui sont confis. Sa fonction est de les
acheminer de manire fiable jusqu' leur destinataire. C'est mme ce qui
distingue le MOM d'un EAI ou bien d'un ESB: il achemine les messages
et c'est tout. En particulier, le MOM ne regarde pas le contenu des
messages, ce n'est pas son problme.

Pourtant, l'un des MOMs que nous tudierons, ActiveMQ, offre cette
possibilit supplmentaire, de dfinir des traitements excuter sur les
messages qui lui sont confis. Ces traitements sont dfinis en rfrence
aux diffrents Enterprise Integration Patterns, un recensement des
familles de traitements (cf Enterprise Integration Patterns , page 35.

Smile Open Source Solutions dition novembre 2009


Page 29

MOMs open source

Un cas simple, par exemple, est un traitement d'aiguillage, en fonction


du contenu du message: le message concerne sur des ordres de bourse,
si l'ordre porte sur une valeur EuroNext, il doit tre rout sur une queue
A, s'il porte sur une valeur du NYSE, il doit tre rout sur une queue B.

Un autre exemple serait une rgle d'envoi d'une copie: si le montant de


l'ordre de bourse est suprieur 1 million, alors il faut envoyer un
message en copie sur une queue C.

La question importante est: Est-ce une bonne ide d'insrer ces rgles et
ces traitements dans le MOM ? Ne sont-ils pas plutt du ressort de
l'application ? Le MOM ne devrait-il pas plutt rester dans son rle de
tuyauterie passive ?

La rponse n'est pas immdiate. Sortir certaines rgles des applications


peut tre un moyen de gagner en flexibilit, d'intervenir dans la gestion
des flux sans modifier les applications. Mais si l'on met en uvre de tels
traitements de manire massive, alors on a en fait parpill des morceaux
d'applications dans le middleware, et cela au dtriment de la
maintenabilit, et de la cohrence de vision.

Quoi qu'il en soit, si le MOM n'offre pas de telles possibilits, ou bien


qu'on ne veut pas en faire usage, il est toujours possible, et mme ais,
de les mettre en place dans des applications relais.

Gestion des transactions


On peut distinguer trois niveaux dans la gestion transactionnelle des
messages:

La gestion des acquittements

La gestion des transactions JMS

La gestion des transactions XA

Gestion des acquittements

L'application destinataire, qui consomme les messages, doit gnralement


effectuer un traitement qui dpend de ce message. Le message ne doit
donc pas seulement tre lu, il doit tre trait. C'est une distinction
importante, dans la mesure o l'application pourrait s'arrter
brutalement (bug ou bien panne matrielle) entre l'instant o elle a lu le
message et l'instant o elle a fini de le traiter avec succs.

C'est pourquoi le fonctionnement normal de l'application consommatrice


est en trois tapes:

1.Recevoir un message

Smile Open Source Solutions dition novembre 2009


Page 30

MOMs open source

2.Traiter le message

3.Acquitter le message, c'est--dire notifier la bonne fin du


traitement.

Tant que le message n'a pas t acquitt, il est conserv par le broker. Si
le message n'est jamais acquitt, il est recycl, c'est--dire qu'il sera
remis lors d'un prochain appel d'une application cliente. Notons que
c'est ce principe qui rend presque impossible la garantie de dlivrance
ordonne pour les MOMs en gnral.

Une application cliente peut acquitter en un seul appel, tous les


messages reus et encore non acquitts. C'est donc une forme de gestion
transactionnelle en lecture.

Transactions JMS

Il est possible de runir diffrents ordres d'mission et de rception de


messages en une transaction, un ensemble inscable d'oprations. C'est-
-dire que soit toutes ces oprations seront excutes avec succs, soit
aucune d'entre elles ne sera excute.

Comme pour les bases de donnes, l'application ouvre une transaction,


effectue diffrentes oprations JMS, puis termine la transaction par un
ordre commit. Si l'application dtecte une condition d'erreur qui interdit
de terminer avec succs l'ensemble des oprations, elle demande un
rollback, c'est--dire un retour arrire sur toutes les oprations
prcdentes. Si l'application se plante , et donc s'interrompt sans
avoir fait ni commit, ni rollback, un rollback sera excut de manire
implicite. Dans le cas d'missions de messages, aucun message n'a en
fait t mis avant le commit. Dans le cas de rception de messages,
aucun acquittement n'aura t excut avant le commit.

Il y de nombreux usages de ces transactions JMS, d'une manire


gnrale pour assurer la cohrence:

Une application peut par exemple mettre 10 messages et tre


assure que soit tous seront bien mis, soit aucun ne le sera.

Une application qui jouerait un rle de relais pourra ainsi lire un


message sur une queue, le traiter, et crire un message rsultant
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
interrompue entre la lecture et l'criture.

Enfin, de la mme manire, une application qui doit rceptionner


plusieurs messages avant d'effectuer un traitement, peut runir
ces lectures en une mme transaction.

Voici un petit exemple de code Java utilisant les transactions.

Smile Open Source Solutions dition novembre 2009


Page 31

MOMs open source

session = connexion.createTopicSession(true, Session.AUTO_ACKNOWLEDGE);

void onMessage(Message msg){


try{
// un traitement, susceptible de lever une exception
m2 = ;
publisher.publish(m2);
session.commit(); // acquittement des messages
}catch(Exception e){
session.rollback(); // annulation des messages
}
}

Si le traitement russit, le programme client excute un commit, sinon, il


demande un rollback, c'est--dire qu'il ordonne au broker tout annuler.

Transactions XA

Enfin, la troisime manire de grer les transactions sinscrit dans le


cadre de XA en environnement Java. XA est une spcification
dfinissant les interfaces qui permettent de mettre en uvre des
transactions htrognes, c'est dire s'tendant plusieurs ressources
de diffrentes natures, telles que bases de donnes, serveurs
d'application (EJB), ainsi donc que les MOMs. En environnement Java,
XA est disponible via l'API JTA, Java Transaction API.

Il s'agit donc de runir, dans un mme ensemble inscable, indivisible,


des traitements portant sur ces diverses ressources.

Un cas trs simple et typique est celui d'une application qui:

Lit un message auprs d'un broker de MOM

Effectue une criture sur la base de donnes.

En l'absence de transactions XA, l'application devrait acquitter son


message auprs du MOM soit avant, soit aprs, l'criture en base. Mais
si elle acquitte avant, puis se plante, elle n'a pas effectu l'criture, mais
le message est pourtant considr trait avec succs. Si l'inverse elle
crit dans la base en premier, mais se plante avant d'avoir acquitt le
message, alors le message sera recycl, et il y aura donc eu deux
critures.

Sur cet exemple trs simple, on voit donc que les transactions XA
peuvent tre absolument indispensables dans certains contextes afin
d'assurer une relle garantie de cohrence au niveau global du systme
d'information. Bien entendu, les transactions peuvent tre sensiblement
plus larges et plus complexes.

Dead Message Queue


Mme si ce n'est pas requis par la spcification JMS, diffrents MOMs
dfinissent une queue spciale appele Dead Message Queue ou DMQ,

Smile Open Source Solutions dition novembre 2009


Page 32

MOMs open source

qui correspond une sorte de poubelle, o l'on pourra retrouver des


messages qui auraient pu tre perdus pour diffrentes raisons
techniques.

Gnralement, la DMQ reoit les messages :

qui n'ont pas une destination valide.

dont la destination est remplie. (limite, plus de mmoire, ...)

dont la dure de vie (TTL, time to live) a expir

qui se sont fait rejeter un certain nombre de fois (configurable). Ces


messages apparaissent comme des messages poisons polluant
la plateforme. Par exemple, un message qui fait planter
systmatiquement un client est un message polluant.

Bien sr, il convient qu'un administrateur analyse ces messages pour en


dterminer les causes d'erreur ventuelles. La DMQ contribue garantir
qu'aucun message n'est perdu par le MOM, il est donc naturellement
recommand qu'elle soit persistante.

Persistance des messages


Comme on la vu en introduction, la fiabilit et la robustesse sont deux
qualits essentielles, constitutives des MOMs, c'est--dire quun MOM
doit acheminer un message qui lui a t confi, sans jamais le perdre,
mme en prsence dvnements inattendus.

Si lapplication destinatrice nest pas en mesure de recevoir le message, le


MOM peut tre amen le conserver un temps indfini. Or le MOM lui-
mme peut tre arrt, que ce soit du fait de pannes matrielles ou pour
des raisons de maintenance.

Pour garantir que les messages ne seront pas perdus, le MOM doit donc
les stocker de manire scurise, de manire persistante.

Il est possible de faire fonctionner un MOM dans un mode sans


persistance, c'est--dire dans un mode o les messages sont seulement
conservs en mmoire. On peut choisir ce mode pour atteindre des
performances plus leves car la persistance a un cot au dtriment
bien sr de la fiabilit.

Smile Open Source Solutions dition novembre 2009


Page 33

MOMs open source

La persistance est toutefois importante, voire essentielle, dans les cas


suivants :

Lorsque les messages sont critiques, par exemple sil sagit de


transactions financires.

Sil peut y avoir un dsquilibre positif entre producteurs et


consommateurs, c'est--dire que de manire durable les
applications productrices mettent plus de messages que les
applications destinatrices ne peuvent lire et traiter. Les
capacits mmoires risqueraient dtre dpasses.

Lorsque le traitement des messages est fortement asynchrone, de


manire structurelle, c'est--dire par exemple si les messages ne
sont traits quen fin de journe, dune manire que lon pourrait
assimiler un traitement batch.

Lorsque lon doit mettre en uvre une gestion des transactions, qui
implique une utilisation plus importante de la mmoire. Les
messages utilisant les transactions ne sont supprims que
lorsque les transactions sont valides.

En prsence de rplication, lorsquelle est offerte. Il est ncessaire


de mettre en uvre la persistance pour accrotre les possibilits
de stockage : un broker ne pourra grer la rplication de tous les
domaines de la plateforme MOM en mmoire.

La persistance peut tre mise en uvre par le MOM de diffrentes


manires :

Sur de simples fichiers

Sur une base de donnes relationnelle

Au moyen dun dispositif spcifique combinant deux supports de


persistance.

Le stockage scuris des donnes et leur gestion transactionnelle tant


un problme dj parfaitement rsolu par les SGBD relationnels, la
plupart des MOMs appuient leur persistance sur une telle base. Laccs
par JDBC leur permet de supporter un large ventail de gestionnaire de
base de donnes (Mysql, Postgres, Oracle, DB2, ...), y compris des bases
100% java telles que Hypersonic et Derby.

Tous les MOMs tudis ici supportent la persistance via JDBC.


Cependant, chaque MOM stocke diffremment les donnes. Certains
introduisent un mode de persistance optimis. Ils sont amens parfois
combiner trois types de stockage : fichier, base de donnes et mmoire.
Et ceci dans le but d'optimiser la fiabilit et la performance. Cest donc un

Smile Open Source Solutions dition novembre 2009


Page 34

MOMs open source

aspect que nous dvelopperons pour chacun des outils, et le dernier


chapitre prsentera les rsultats de diffrents tests de performance.

Fonctionnalits avances

Code gnrique et JNDI


Comme nous lavons soulign, le principe dune spcification telle que
JMS est que lon peut crire un programme sinterfaant un provider
JMS, c'est--dire un MOM, sans tre dpendant dune implmentation
particulire, dun MOM en particulier.

Pour cela, le programme JMS Client , ne doit pas instancier directement


les classes du MOM, et la bonne pratique est de les obtenir partir dun
fournisseur JNDI.

De mme que JDBC est une interface permettant daccder une base de
donnes, de mme JNDI ou Java Naming and Directory Interface est
linterface qui permet laccs des services de nommage et de rpertoire
de faon standard. Lutilisation la plus commune de linterface JNDI
concerne laccs un annuaire LDAP. Mais au-del de la fonctionnalit
usuelle de gestion dune base de personnes, dutilisateurs, on peut
utiliser lAPI JNDI simplement pour accder des objets dsigns par des
noms. Ainsi, dans le contexte des MOMs, JNDI sert stocker des objets
gnriques du MOM, afin de transmettre leur implmentation spcifique
de JMS au programme.

Le premier objet que le programme obtient est une connectionFactory,


une usine connexions. Puis la connectionFactory permettra de crer
un objet Connection, partir duquel on crera un objet Session, qui lui-
mme pourra instancier des objets Message, MessageProducer et
MessageConsumer.

Ce que lon peut reprsenter comme suit :

Smile Open Source Solutions dition novembre 2009


Page 35

MOMs open source

Enterprise Integration Patterns


Le livre de Gregor Hohpe et Bobby Woolf intitul Enterprise Integration
Patterns: Designing, Building, and Deploying Messaging Solutions , est
un ouvrage de rfrence en matire de middleware. Il recense en
particulier toutes les formes dinteractions par middleware, et tous les
types de traitements que peut raliser un middleware. Par exemple un
traitement de routage dune queue vers une autre, selon diffrentes
rgles. Ou encore des traitements de fusion ou de fission des messages :
le moteur de traitement peut clater un message en plusieurs, ou
linverse runir diffrents messages en un seul.

EIP se ne limite pas cela. Il dcrit toutes les manires disposition


pour intgrer des logiciels entre eux. Catgorisant ces patterns selon leur
objet, cest un peu la bible des architectes et urbanistes.

Voici la liste des catgories rfrences par EIP ainsi que quelques
exemples :

Styles dintgration : Liste les supports de communications comme


le transfert de fichier, le partage de donne, linvocation de
procdure et la communication par message. On retrouve ici les
type de middleware voqus en introduction

Smile Open Source Solutions dition novembre 2009


Page 36

MOMs open source

Les systmes de messagerie : Cette catgorie de pattern regroupe


les composants des systmes bass sur une communication par
messages comme un message, un traducteur de message, un
routeur de message,

Les cas dutilisation dune communication par messages : Cette


catgorie dcrit le concept de queue, de topic, de bridge de
message et autres

Mthode de construction des messages : message de commande,


message de document, message dvnement,

Le routage des messages : routage bas sur le contenu, agrgation


de message,

Transformation de message : envelopper un message, enrichir le


contenu,

Rception de message : Cette catgorie dcrit les diffrentes


manires de recevoir un message comme la consommation
callback, abonnement durable, slection de message,

Administration de la plateforme : Cette catgorie dcrit les


diffrentes manires de grer la plateforme : persistance,
dtournement de message, coute passive,

Interoprabilit entre MOMs


Les protocoles filaires des MOMs (par exemple entre une application et
un broker ou entre un broker et un autre) sont parfois sans spcification
et sans documentation. Parmi les MOMs de notre slection, aucun noffre
nativement une passerelle vers dautres MOMs.

Pour rsumer, la partie haute de la figure ci-dessous, c'est--dire


l'interconnexion des MOMs au niveau du protocole interne, n'est pas
possible. Il faudrait que les deux MOMs utilisent le mme protocole
interne, ce qui nest en gnral pas le cas.

Il ne suffit pas dassurer la transmission des messages, il faut grer la


propagation de tout lannuaire des domaines.

Smile Open Source Solutions dition novembre 2009


Page 37

MOMs open source

des fins dinteroprabilit, certains MOMs ont mis en place un systme


dit de Bridge (Passerelle). C'est une application deux faces qui est,
d'un ct connecte un MOM et de l'autre connecte un autre.
Lorsquelle reoit un message dun ct, elle le transmet de lautre.

Cette solution peut rencontrer des limites en termes de performance,


flexibilit et de scurit. Hormis le temps et la complexit de mise en
place, la passerelle risque dtre un goulot d'tranglement, et un point de
fragilit. Au sein dun mme systme dinformation, on vise lvidence,
un MOM unique. Mais bien sr, les cas possibles dhtrognit sont
nombreux : rachat et intgration dentreprise, relations avec des
partenaires, etc.

Passerelle base dESB


Le travail d'intgration est laiss aux solutions du type EAI ou ESB
(Enterprise Service Bus). laide de lESB Mule, par exemple, il est assez
simple de mettre en place une passerelle entre deux domaines de deux
MOMs - Pas besoin dapplication supplmentaire pour jouer le rle de
passerelle ni mme de toucher une ligne de code Java. Regardons
comment configurer Mule pour cette tache. Pour ce faire, il faut crer
deux connecteurs : un vers chacun des MOMs. Puis il faut crer un
service par domaine qui aura la mission de transmettre les messages.
Voici une partie du fichier de configuration.
[...]
<jms:connector name="jmsConnectorJBOSS"
connectionFactoryJndiName="java:/ConnectionFactory"
jndiInitialFactory="org.jnp.interfaces.NamingContextFactory"
jndiProviderUrl="jnp://localhost:1099"
jndiDestinations="true"
forceJndiDestinations="true"
specification="1.1"/>
<jms:connector name="jmsConnectorWEBLOGIC"
jndiProviderUrl="t3://localhost:7001"
connectionFactoryJndiName="javax.jms.QueueConnectionFactory"
jndiDestinations="true"

Smile Open Source Solutions dition novembre 2009


Page 38

MOMs open source

forceJndiDestinations="true"
jndiInitialFactory="weblogic.jndi.WLInitialContextFactory"
specification="1.0.2b"/>

<model name=JMSBridge>
<service name="JBOSS_WebLOGIC">
<inbound>
<jms:inbound-endpoint topic="my.destination" connector-
ref="jmsConnectorJBOSS"/>
</inbound>
<outbound>
<pass-through-router>
<jms:inbound-endpoint topic="my.destination" connector-
ref="jmsConnectorWEBLOGIC"/>
</pass-through-router>
</outbound>
</service>
</model>

La tche nest pas dune grande complexit, mais elle peut tre
fastidieuse, et donc coteuse, puisquil faut relier des domaines entre
eux un par un, sans en oublier aucun. Et bien sr, cette configuration
devra tre lobjet dune maintenance, en fonction des variations de
configuration intervenant de part et dautre.

Dans notre exemple, la passerelle met en correspondance :

La queue Q2 du MOM A la queue Q47 du MOM B

La queue Q1 du MOM A la queue Q12 du MOM B

Le topic T1 du MOM A la queue T52 du MOM B

Dans la pratique, cette passerelle est gnralement ralise en Java et


utilise le JMS. On parle de JMS Bridge ou de passerelle JMS.

La mise en place d'une passerelle rend caduque certaines fonctionnalits


incluant plusieurs brokers. Des fonctionnalits comme le partage de
mdia de stockage ou le clustering ne marcheront plus de manire
naturelle. Deux MOMs diffrents impliquent deux politiques diffrentes
de persistance, de rplication, de topologie.

Smile Open Source Solutions dition novembre 2009


Page 39

MOMs open source

Ceci tant, il est possible de multiplier les passerelles des buts de


rpartition de charge ou de robustesse uniquement dans les cas de
liaison de queue. D'autres solutions sont envisageables, mais cela reste
des dveloppements spcifiques relatifs des problmatiques
d'intgration. Un exemple simple serait de buffriser les transactions. Il
est en effet bien plus performant de regrouper la rception ou lenvoi de
plusieurs messages dans une seule et mme transaction.

Gestion de la scurit
tant donn le rle souvent central dun MOM dans un systme
dinformation, les questions de scurit sont videmment cruciales. Si
nimporte quelle application peut se connecter au MOM et se mettre en
lecture sur une queue, on voit quil sera facile de pirater le systme et
daccder des donnes critiques, ou dinjecter des messages.

Un MOM interagit avec des applications, lesquelles interagissent avec


dautres applications, ou avec des utilisateurs. La question de la
scurit dans le contexte des MOMs est semblable ce quelle est dans le
contexte des bases de donnes. Les brokers doivent authentifier les
applications qui sy connectent, mais ils doivent aussi contrler les droits
spcifiques de chaque application vis--vis de chaque opration sur
chaque queue ou topic. Et les brokers doivent aussi authentifier les
autres brokers avec lesquels ils changent.

Il est essentiel de mettre en place toute la politique de scurisation du


MOM ds son premier dploiement, quelle que soit la nature des
informations changes, ou la configuration rseau, car une fois le MOM
institu comme standard dchange, il est craindre quon ne se reposera
pas la question de la scurit pour chaque nouvelle application qui en
aura lusage.

Les MOMs que nous tudions offrent la possibilit de spcifier les rgles
dauthentification et dhabilitations au moyen dun provider de scurit,
utilisant le cadre de JAAS, Java Authentication and Authorization Service.
Le MOM propose son propre plugin JAAS, dont le comportement est
configur par un fichier Xml, ce qui convient le plus souvent, mais il est
envisageable galement de mettre en place un plugin JAAS spcifique.

Smile Open Source Solutions dition novembre 2009


Page 40

MOMs open source

Administration et monitoring
Les MOMs offrent diffrentes possibilits dadministration et de
monitoring :

API spcifique

Configuration et dploiement
Les MOMs peuvent fournir plusieurs modes de configuration : fichiers de
configuration, messages adresss aux brokers, travers diffrentes
syntaxes (Ini, Spring, DSL, ), plus ou moins compliques. On remarque
une tendance intgrer le MOM au sein d'environnements comme
Spring. Lintrt dintgrer la configuration Spring est par exemple la
possibilit de lancer un broker partir dun outil le supportant. Ci-aprs
un exemple issu de Mule.
<spring:beans>
<spring:bean id="activeMqConnectionFactory1"
class="org.apache.activemq.xbean.BrokerFactoryBean">
<spring:property name="config"
value="file:conf/activemq/global/activemq_1.xml" />
<spring:property name="start" value="true" />
</spring:bean>
</spring:beans>

Dans certains cas, le MOM est intimement intgr un serveur


d'application - cest le cas de JBoss - et ainsi utilise ses fichiers de
configuration. Cette intgration est plutt une gne quautre chose.

Les MOMs peuvent aussi permettre de modifier leur configuration


chaud. Par exemple, il est utile d'avoir la possibilit d'ajouter des brokers
la vole sans avoir redmarrer la plateforme, qui impliquerait une
interruption. Les messages non persistants doivent tre sauvegards et
remis en mmoire lors du dmarrage, ce qui ne se fait pas
automatiquement dailleurs.

Les MOMs tudis sont tous raliss en Java. Ils sont tous utilisables sur
les plateformes supportant le Java 5 (Linux, Windows, Mac OS, Solaris,
HP UX, AIX ).

Rpartition de charge applicative


On parle parfois des queues comme mettant en uvre un change de 1
vers 1 . C'est exact pour un message donn, mais ce n'est pas
ncessairement le cas pour l'ensemble du flux de messages. On a vu en
effet que plusieurs applications clientes pouvaient tre en lecture sur une
mme queue. Dans ce cas, le MOM dlivre chaque message une et une
seule des applications. Les rgles de choix de l'application ne sont pas

Smile Open Source Solutions dition novembre 2009


Page 41

MOMs open source

spcifies, mais le plus souvent il s'agit d'un simple round robin, c'est--
dire une attribution cyclique, tour de rle .

Ainsi, un MOM peut offrir un moyen trs simple et robuste de mettre en


uvre une rpartition de charge applicative.

Considrons que chaque message reprsente une demande de traitement,


un par exemple un traitement d'OCR (reconnaissance de caractres) qui
consomme beaucoup de CPU. Une application principale est en charge
de dfinir chaque traitement unitaire, dont elle crit les caractristiques
dans un message, qu'elle adresse sur une queue du MOM. Le
traitement est rparti sur une dizaine de serveurs physiques, sur
lesquels tourne la mme application, dont chaque exemplaire, chaque
instance , boucle sur le traitement:

Recevoir un message

Effectuer le traitement

Acquitter le message.

Le flux de travaux est donc rparti de manire quilibre entre les


diffrents serveurs. Et notons que mme si l'affectation est btement
cyclique, l'quilibrage est satisfaisant puisque chaque serveur reoit des
travaux selon sa capacit traiter.

Et lon peut mme spcialiser les consumers, si besoin, en leur faisant


slectionner dans la queue, les tches quils savent faire.

Topologie et rseau de brokers


Un MOM peut tre constitu dun unique broker, ou bien de diffrents
brokers changeant en rseau.

Selon quels critres peut-on dfinir ces questions de topologie ?

Les questions essentielles porteront sur :

Smile Open Source Solutions dition novembre 2009


Page 42

MOMs open source

Les performances et la tenue en charge

La tolrance aux pannes matrielles

La tolrance aux pannes rseau

En gnral, sur une mme plateforme, c'est--dire un ensemble de


serveurs relevant dun mme datacenters et connects trs haut dbit,
un unique broker peut suffire, pour autant que sa haute disponibilit
soit assure, et quil ait la capacit traiter la volumtrie requise.

Nous verrons plus loin comment traiter la haute disponibilit.


Concernant la capacit, comme nous le verrons dans les benchmarks, les
MOM sont des outils construits pour de hautes performances, et un
unique broker pourra acheminer plus de 1000 messages par seconde en
mode persistance, et plus de 5000 sans persistance. Dans beaucoup de
cas, cela peut suffire. Dautant quil sagit l de dbits de traitement et
dacheminement, il est toujours possible de confier les messages au MOM
un dbit plus lev en prsence de pics.

Du point de vue rseau, on peut reprsenter cette configuration un seul


broker, dans un seul datacenter, simplement comme ceci :

Dun point de vue logique, on peut le visualiser comme ceci, une


configuration hub and spoke , noyau et rayons :

Smile Open Source Solutions dition novembre 2009


Page 43

MOMs open source

Cest principalement lorsque les applications sont rparties sur plusieurs


datacenters que lon doit envisager des configurations plusieurs
brokers.

Rappelons que la disponibilit du MOM nest pas juste une bonne chose,
elle est absolument fondamentale pour les applications. Lorsquun
utilisateur veut se connecter au site web de sa banque, on prfre bien
sr que ce site soit disponible. Sil ne lest pas, lutilisateur est
mcontent, mais il peut r-essayer un peu plus tard.

Pour une application sadressant un MOM, la question de disponibilit


sanalyse diffremment :

Si le concepteur de lapplication peut tre certain que le MOM est


toujours disponible, il ne traite pas le cas dindisponibilit, ou
plus exactement, il considre ce cas comme une erreur fatale, ou
en dautres termes : pas de MOM, pas dappli . Cest souvent
la politique dune application vis--vis de sa base de donnes.

Si au contraire lindisponibilit du MOM est possible, le concepteur


de lapplication doit grer ce cas, ce qui peut changer
radicalement la logique de son application, et amener une grande
complexit. Lapplication est-elle suppose mettre de ct le
message en attendant le retour du MOM ? Non, certainement
pas, ce serait une erreur de sengager dans cette voie. Le MOM
lui-mme est dj le moyen de mettre de ct le message, en
cas dindisponibilit de lapplication destinataire.

Ainsi, nous considrons quune application qui utilise un MOM est, le


plus souvent, dans un mode o lindisponibilit du MOM est une erreur
fatale.

Et pour lapplication, le MOM est indisponible lorsque le broker est


indisponible ou bien nest pas joignable.

Cest pourquoi, lorsquun systme dinformation est rparti sur plusieurs


datacenters, connects en WAN, on prconise de disposer dun broker

Smile Open Source Solutions dition novembre 2009


Page 44

MOMs open source

dans chaque datacenters. Ainsi, mme lorsque la connectivit est


perdue entre les datacenters, toutes les applications peuvent continuer
changer avec le MOM, via un broker local.

Ce qui donne, dun point de vue rseau, le modle suivant :

Et bien sr, dun point de vue logique :

En prsence de multiples brokers, le MOM fonctionne toujours sur un


principe de store and forward , c'est--dire que chaque broker conserve
les messages jusqu ce quil ait pu les transmettre un autre broker,

Smile Open Source Solutions dition novembre 2009


Page 45

MOMs open source

ceci bien sr dans une logique transactionnelle. Les brokers changent


entre eux afin didentifier les besoins de routage des messages. C'est--
dire que lorsquune application D indique son broker local quelle est
en lecture sur telle queue ou tel topic, le broker local change avec les
autres brokers pour les informer de cette attente, et obtenir les messages
de cette queue.

Notons quil ny a pas de notion de broker affect la gestion dune


queue , ni de queue affecte un broker , la gestion de toutes les
queues est vritablement distribue entre les brokers.

Tolrance aux pannes


Nous avons abord plus haut, en voquant la topologie, la question de la
tolrance aux pannes rseau, aux pertes de connectivit.

Voyons maintenant la tolrance aux pannes au niveau dun broker


particulier.

Les techniques mises en uvre sont en fait les mmes que pour
nimporte quel serveur dapplication : redondance du serveur et partage
des donnes.

Rplication matre-esclave

Lorsquon met en place une rplication dun broker matre vers un broker
esclave, chaque broker possde son propre stockage, le broker matre
adresse chaque message reu lesclave, et le message nest acquitt
lapplication que lorsquil a t scuris sur le matre et sur lesclave,
c'est--dire que la rplication est synchrone.

On peut reprsenter cette configuration comme suit :

Lorsque le broker matre devient indisponible, le broker esclave reprend


la fonction et toutes les applications clientes sadressent lui, de
manire transparente.

Smile Open Source Solutions dition novembre 2009


Page 46

MOMs open source

Partage du stockage

Une autre configuration possible assurer la haute disponibilit du broker


est le partage du systme de persistance, quil sagisse dune base de
donnes ou bien du systme de fichiers.

Dans cette configuration, il ny a quun stockage, partag entre le matre


et lesclave. Le matre dtient un verrou sur une table ou un fichier, et
lesclave est en attente sur ce verrou. De sorte que lorsque le matre est
arrt, lesclave obtient le verrou et reprend la fonction de broker
principal, en accdant tous les messages et les informations dtat qui
se trouvent dans le dispositif de stockage.

On peut reprsenter cette configuration ainsi :

Et le dispositif peut stendre assez facilement de multiples brokers


esclaves.

Auto-dcouverte
Ces clusters de brokers sont configurables et peuvent profiter des
fonctionnalits d'auto-dcouverte. Par exemple, lors de la mise en ligne
d'un broker supplmentaire (configur correctement), les brokers en
cours d'excution le reconnaitront tout de suite comme faisant partie de
la plateforme.

Smile Open Source Solutions dition novembre 2009


Page 47

MOMs open source

Tous les mcanismes de dcouverte automatique reposent sur le


broadcast ou le multicast. Ces dernires permettent l'envoi de paquets
d'information un ensemble de machines sur un rseau sans pour
autant les avoir identifies unitairement.

Lauto-dcouverte par broadcast et multicast ne fonctionne pas sur


lInternet. Dans ces cas, certains MOMs autorisent l'auto-dcouverte
laide dun serveur dannuaire comme LDAP. Un soin particulier doit tre
apport la scurit de la plateforme distribue.

Smile Open Source Solutions dition novembre 2009


Page 48

MOMs open source

LES MOMS OPEN SOURCE

Les MOMs tudis


Nous avons slectionn les 4 outils qui nous semblent les plus crdibles,
les plus solides, et les plus prennes, ceux sur lesquels on peut envisager
sans risque de construire une architecture critique pour lentreprise.

Les outils slectionns ne se diffrencient pas tant par la liste des


fonctionnalits, qui pour lessentiel dcoule de la spcification JMS. Ils
se distinguent en revanche par les possibilits dinterfaage, par des
fonctionnalits avances en particulier en matire de clustering. Ils se
distinguent aussi par leur dynamique de dveloppement, et lestimation
que lon peut faire de leur part de march.

Les produits slectionns sont les suivants :

Active MQ

JORAM

Open Message Queue

JBoss Messaging

JORAM

Prsentation
JORAM ou Java Open Reliable
Asynchronous Messaging, est le
Middleware de consortium Object Web.
Object Web est aussi connu pour son
serveur d'application Java nomm Jonas
auquel est d'ailleurs intgr JORAM.

JORAM est sortie en 1999 et est distribu sous licence LGPL depuis
Mai 2000.

Caractristiques principales du produit


Nous allons parcourir les caractristiques de JORAM selon les classes de
fonctionnalits prsentes plus haut.

Smile Open Source Solutions dition novembre 2009


Page 49

MOMs open source

Implmentation

JORAM a une architecture interne lgante, base sur le modle d'agent.

Architecture de JORAM

Un agent est un composant logiciel rpondant certains vnements.


Dans le cas de JORAM, les vnements sont sous forme de messages.
Les queues et les topics sont ainsi reprsents par des agents. Un
utilisateur connect la plateforme est galement reprsent par un
agent dit proxy. Cette approche offre une grande flexibilit, car elle
permet la cration et la suppression d'agents la vole et sur n'importe
quel broker. Un broker est donc uniquement un serveur d'agent (ou
un container d'agent). linstar des EJB, ces agents ne peuvent pas
encore tre dplacs de broker en broker.

Le code source rcupr du SVN JORAM est assez bien document. Il


est fait de beans spars en Interfaces et Implmentations. Dans
lensemble, le code respecte les bonnes pratiques de dveloppement Java.

Langages pris en charge


Les langages par lesquels ont peut accder JORAM sont :

Java via l'interface JMS.

C et C++ : laide de JNI, permettant ainsi de simuler un


environnement JMS.

Protocoles pris en charge


Le protocole interne de JORAM est propritaire, et n'est pas
document. Nous estimons que cest un handicap dans la mesure
o cela tend limiter le nombre denvironnements dans lesquels des
APIs sont offertes, et rendre plus difficiles les interconnexions.
Joram le dsigne simplement par TCP , mais il est vident quil y a
un protocole, non spcifi, au dessus de TCP/IP.

Smile Open Source Solutions dition novembre 2009


Page 50

MOMs open source

Ainsi, JORAM ne sappuie pas sur des protocoles standards comme


AMQP ou STOMP.

JORAM met disposition des passerelles permettant d'tendre le


nombre de protocoles grs tout en se basant sur le protocole dit
TCP .

Passerelle SOAP (grce un serveur d'application) : Permet la


communication en SOAP avec le broker, donc en principe depuis
des environnements autres que Java.

Passerelle Mail : Cette passerelle permet d'envoyer et de recevoir


des messages JMS en s'appuyant sur du SMTP (Protocole de
mail). Pour cela JORAM utilise des queues et topics spcifiques.
Cette passerelle est ralise en Java.

Passerelle FTP : JORAM rserve des queues spcifiques pour les


canaux FTP. Cette passerelle fonctionne sur le mme principe
que la passerelle Mail. Elle est destine l'change de
messages volumineux. Cette passerelle est ralise en Java.

Interfaces prises en charge

Selon les classes d'interface :

Gestion des messages

JORAM prend en charge le JMS 1.1 et est compatible avec JMS


1.0.2b. JORAM a aussi implment une interface JMS 1.1 destine,
au Framework J2ME, la version de lenvironnement Java destine
aux mobiles, tlphones et PDAs. JORAM peut donc tre mis en
uvre partir de terminaux mobiles compatibles Java.

JORAM prend aussi en charge JCA 1.5, lui permettant de se


connecter aux diffrents PGI du march (Open ERP, ) qui le grent.

Interfaces dAdministration, Monitoring, Configuration

JORAM supporte linterface dadministration JMX. Il est intgrable


et configurable en Java. Il supporte aussi le JAAS pour
lauthentification et les habilitations.

Gestion des messages

Outre les fonctionnalits standards, JORAM gre :

La notion de hirarchie des topics : Chaque topic peut tre li un


autre (et un seul) et recevoir tous ses messages. son tour, le
parent topic reoit tous les messages de ces parents et les envoie
tous ses topics fils. Prenons un exemple : Imaginons trois

Smile Open Source Solutions dition novembre 2009


Page 51

MOMs open source

topics : Manager, Operateurs_France, Operateurs_Espagne. On


souhaite que tous les messages envoys aux topics Oprateurs_*
soient aussi envoys au topic Manager. En plaant Manager
comme topic pre aux topic Operateurs_*, tous les
consommateurs recevront de faon transparente les messages
envoys aux topics Oprateurs_*.

Il n'est pas possible de faire de traitement avec JORAM.

Persistance des messages

La persistance peut tre gre sur le systme de fichier, dans une base
java embarque (Derby, voir plus loin pour plus de dtail), ou sur une
base de donnes relationnelle externe via JDBC.

Derby est un systme de gestion de base de donnes relationnelle


embarque. Embarque veut simplement dire qu'il n'est pas ncessaire
d'avoir un serveur de base de donnes, au sens dun processus distinct.
La base de donnes est dans le mme processus que l'application. Le
support de stockage de la base Derby est le fichier. Derby est une
mthode avance de lecture et d'criture sur des fichiers.

Nous navons pas trouv, dans les documentations fournies par JORAM,
dinformation sur les optimisations possibles de la gestion de la
persistance.

Rpartition de charge et haute disponibilit avec plusieurs sites

Comme on la voqu, JORAM est construit selon une architecture


base d'agents. Cette architecture est lobjet d'un livre blanc disponible
sur le site du produit.

Grce son architecture, JORAM assure :

La disponibilit : pour rappel, la dfaillance dun serveur naffecte


que les clients JMS connects ce serveur. Les autres
continuent fonctionner en accdant dautres copies du
domaine. La synchronisation des domaines se fait d'une manire
transparente, selon un principe matre-esclave.

Rpartition de charge : les applications clientes sont rparties sur


plusieurs serveurs de telle sorte que la charge engendre par la
gestion des domaines soit rpartie entre les serveurs. Cette
rpartition peut soit tre ralise manuellement (configuration et
utilisation du Store and Forward ), soit tre confie un load-
balancer.

Smile Open Source Solutions dition novembre 2009


Page 52

MOMs open source

Interoprabilit avec d'autres MOMs

JORAM fournit un squelette de passerelle avec d'autres MOM grant le


JMS 1.1.

Gestion de la scurit et d'un annuaire

JORAM peut tre configur pour utiliser des connexions SSL / TLS.

Il gre l'authentification et l'autorisation.

Des fichiers de configuration au format XML sont utiliss pour dfinir la


configuration de scurit. Il est possible galement de personnaliser la
gestion de la scurit au travers JAAS.

Mais ces aspects ne sont pas suffisamment documents.

Administration

JORAM met disposition une interface graphique d'administration. Elle


se base sur l'utilisation de JMX.

Voici quelques captures d'cran de l'interface d'administration.

Smile Open Source Solutions dition novembre 2009


Page 53

MOMs open source

Smile Open Source Solutions dition novembre 2009


Page 54

MOMs open source

Lors d'une utilisation standard, l'interface d'administration graphique


prsente quelques problmes. Si lon gnre beaucoup d'actions,
l'application saffole et devient erratique.

Il nous semble que cette interface devrait tre surtout utilise des fins
de dmonstration.

Configuration et dploiement

Aprs tlchargement, et modulo l'installation d'un runtime Java (JRE), il


suffit de quelques dclarations d'environnement pour faire fonctionner la
solution.

Une vingtaine d'exemples est fournie. Un systme bas sur ANT rend
l'utilisation de ces exemples particulirement simple. On regrette
labsence dune documentation digne de ce nom concernant le C / C++
et la persistance.

La configuration du MOM se fait l'aide de fichiers XML. Les balises XML


sont assez claires. La dfinition d'un broker se fait par exemple l'aide

Smile Open Source Solutions dition novembre 2009


Page 55

MOMs open source

d'une balise server contenant la dfinition de celui-ci ainsi que la


dfinition de services.
<?xml version="1.0"?>
<config>
<property name="Transaction" value="fr.dyade.aaa.util.NullTransaction"/>

<server id="0" name="S0" hostname="localhost">


<service class="org.objectweb.joram.mom.proxies.ConnectionManager"
args="root root"/>
<service class="org.objectweb.joram.mom.proxies.tcp.TcpProxyService"
args="16010"/>
<service class="fr.dyade.aaa.jndi2.server.JndiServer" args="16400"/>
</server>
</config>

JORAM fonctionne sur tout systme d'exploitation supportant au


minimum Java 1.4.

Dtail sur le projet

Dtail

JORAM est distribu sous licence


LGPL et est publi par Object
Web . Le principal contributeur de
ce projet est la startup ScalAgent
Distributed Technologies , une
socit issue la fois de l'INRIA et de Bull.

Nous avons test la version 5.2.1. Des mises jour sont disponibles
environ tous les 3 mois aussi bien pour les versions en cours que pour
les versions antrieures.

Il n'y a pas de version commerciale de JORAM, ni de modules distribus


sous une autre licence.

Qualit

JORAM utilise ANT pour grer la construction du projet, le code source


est disponible sur un SVN public. JORAM est galement disponible dans
le rfrentiel MAVEN Central qui ne contient que les binaires.

Concernant la documentation, un WIKI est hberg sur la forge d'OW2,


mais celui-ci n'est pas trs riche, et surtout trop peu actualis. La
dernire mise jour semble dater du 06/04/2006.

Un guide complet PDF en anglais abordant l'installation, l'utilisation et


l'administration de JORAM est disponible sur le site. A cela, s'ajoute un
forum sous forme dune mailing liste, avec accs aux archives. En
moyenne, on trouve quelques dizaines de messages par mois.

Smile Open Source Solutions dition novembre 2009


Page 56

MOMs open source

Un gestionnaire de bug est prsent sur la forge OW2, mais ne semble


pas tre utilis par le projet, on trouve uniquement 10 anomalies entre
2003 et 2009. Le nombre de contributeurs au projet JORAM est de 24.

Le site officiel de JORAM est http://joram.ow2.org. Il a un page rank


Google de 4, ce qui est plutt faible pour ce genre de sites. Le site est
compos d'une centaine de pages tandis que le Wiki comporte une
trentaine de pages. Les archives de mails comptent, quant elle, prs
400 pages.

Le site internet de JORAM n'est pas prsent sur Google Trend.

Rfrences

Aucune rfrence n'est renseigne.

Smile Open Source Solutions dition novembre 2009


Page 57

MOMs open source

Active MQ

Prsentation
Sorti en 2004, Active
MQ est le MOM open
source de la fondation
Apache. Il est distribu
sous licence Apache 2.0.

Active MQ sappuie sur quelques autres projets Apache :

Apache Camel : Implmentation partielle des Entreprise


Integration Patterns , que nous avons voqus plus haut.

Jetty : Serveur d'application Java intgr Active MQ

Et Active MQ est son tour utilis par quelques autres grands projets :

ESB : Active MQ est utilis par plusieurs ESBs (Enterprise Service


Bus) tels qu Apache Service Mix et Mule.

Serveur J2EE : Active MQ est intgr au serveur dapplication


Geronimo (certifi JEE5) comme fournisseur JMS par dfaut.

Axis et CXF : Extension de Active MQ.

Caractristiques principales du produit

Langages d'implmentation

Le code source rcupr du SVN, ne semble pas toujours tre dune


qualit exemplaire. La mise en forme du code laisse dsirer et certaines
parties ne respectent pas les bonnes pratiques de codage Java : peu
d'interfaces, classes et mthodes trop longues, ... Mais la robustesse du
produit est nanmoins rpute.

Langages pris en charge

La diversit des langages et environnements supports est


particulirement grande, et cest un des grands atouts de Active MQ.
Comme on la voqu, laptitude faire changer des applications
htrognes fait partie des missions naturelles dun middleware.

Les langages partir desquelles on peut accder Active MQ sont :

Smile Open Source Solutions dition novembre 2009


Page 58

MOMs open source

C : grce la bibliothque OpenWire C Client

C++ : grce CMS : C'est une bibliothque C / C++ proposant des


interfaces similaires JMS

Ajax, RESTful et SOAP : sous condition d'utilisation des passerelles


proposes par Active MQ. (La passerelle est sous forme d'un
servlet Java, fonctionnant sur Jetty, ou autre)

.Net : grce NMS : C'est une bibliothque .Net proposant des


interfaces similaires JMS

Delphi and FreePascal grce Habari Active MQ Client

Perl, PHP, Pike, Python, Ruby, grce au protocole STOMP et aux


librairies client correspondantes.

On voit que le choix du duo STOMP et OpenWire comme protocole de


communication a ouvert la voie limplmentation dAPIs dans de
nombreux environnements.

De plus, sagissant de protocoles ouverts et bien spcifis, il est possible


de raliser un client STOMP vers ActiveMQ depuis de nouveaux
environnements sil en manquait la liste.

Protocoles pris en charge

Les protocoles prit en charge par Active MQ sont les suivants :

AMQP : Ce protocole est pris en charge,e mais comme sa dfinition


est volatile, Active MQ prend en charge uniquement les versions
0.8 / 0.9

OpenWire : Protocole de communication messages

STOMP : Protocole de communication messages

JXTA : C'est un protocole permettant de crer des rseaux au


dessus des rseaux. JXTA (pour juxtapose), dfini par une srie
de protocoles lgers conus pour grer n'importe quelle
application peer-to-peer. JXTA est compatible avec l'ensemble
des plateformes informatiques. Limplmentation Java est base
sur du XML. Avec Active MQ, il agit en tant que connecteur.
jxta://hostname:port

XMPP : Le protocole de messagerie instantane utilis par Jabber.


Ainsi, on peut se connecter au MOM grce un client de
messagerie de type Jabber.

En ce qui concerne les protocoles proposs par des passerelles :

Smile Open Source Solutions dition novembre 2009


Page 59

MOMs open source

Grce aux sous-projets Axis et CXF de Apache, Active MQ gre


SOAP, REST,

Interfaces prises en charge

Selon les classes d'interface :

Messagerie

JCA 1.5 sous Java

JMS 1.1 et 1.0.2b sous Java

NMS partir des plateformes .Net

CMS partir des plateformes C/C++

Administration, Monitoring, Configuration

JMX, XML, Spring, Java DSL et par messages

Ces points seront revus plus loin.

Gestion des messages


Mis part la gestion standard des messages impose par la spcification
JMS 1.1, Active MQ gre :

Groupe de messages : Ceci est un concept intressant dans la


mesure o il assure que tous les messages d'un mme groupe
soient reus par un consommateur dtermin. Les messages d'un
groupe X seront consomms uniquement par le consommateur
privilgi. Si celui-ci meurt, Active MQ choisit automatiquement
un autre consommateur suivant la configuration.

Notion de slecteur de messages compatible avec XPATH (et SQL 92


issue de la spcification JMS)

Cependant, il n'y a pas de notion de priorit des messages. Il est


possible de la simuler en utilisant des groupes de messages ou
bien des slecteurs.

Destination virtuelle : Il est possible de dfinir des topics et des


queues redirigeant vers des composants du mme domaine (topic
vers topic et queue vers queue).

Total Ordering : Active MQ a la possibilit dassurer que lordre


de rception des messages correspond bien lordre denvoi.

Smile Open Source Solutions dition novembre 2009


Page 60

MOMs open source

<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>

Et bien dautres, issues des EIP

Traitement des messages


Le traitement des messages dActive MQ est sans doute son plus clbre
atout, aprs celui de sa grande connectivit. l'aide du projet Camel qui
est intgr, il a la possibilit de traiter les messages selon les modles
d'intgration d'entreprises (EIP).

Citons un exemple faisant dActive MQ un EAI part entire. Les


fonctionnalits de routage et de transformation reprsentent les
caractristiques principales des EAIs.

Un exemple de routage est celui qui va rediriger le message selon son


contenu.

Routage selon le contenu du message

Et la configuration Spring associe :


<camelContext errorHandlerRef="errorHandler" streamCache="false"
id="camel" xmlns="HTTP://camel.apache.org/schema/spring">
<route>
<from uri="seda:demandes"/>
<choice>
<when>
<xpath>$entreprise = 'smile'</xpath>
<to uri="seda:smile"/>
</when>
<when>
<xpath>$entreprise = 'autres'</xpath>
<to uri="seda:avant-vente"/>
</when>
<otherwise>

Smile Open Source Solutions dition novembre 2009


Page 61

MOMs open source

<to uri="seda:accueil"/>
</otherwise>
</choice>
</route>
</camelContext>

Quelques explications simposent. Les messages reus sur la file


demandes seront transmis aux files :

smile : si la proprit entreprise du message est gale Smile

avant-vente : si la proprit entreprise du message est gale


autres

accueil : si aucune des conditions prcdentes n'est respecte.

Il faut nanmoins rappeler que Camel n'implmente pas entirement EIP.

Gestion des transactions


Bien qu'il n'existe pas de documentation sur la mthode de gestion des
transactions en interne, ActiveMQ nous donne quelques pistes.

Par exemple, la journalisation du Message Store permet la reprise sur


incident sans perte de donnes lors d'un rollback (retour arrire).

Attention, par dfaut, le routage et la transformation des messages ne


sont pas transactionnels.

Une Dead Message Queue est prsente. Voici un exemple de


configuration :
<destinationPolicy>
<policyMap>
<policyEntries>
<!-- Set the following policy on all queues using the '>' wildcard -->
<policyEntry queue=">">
<deadLetterStrategy>
<!-- Use the prefix 'DLQ.' for the destination name, and make the DLQ a
queue rather than a topic -->
<individualDeadLetterStrategy queuePrefix="DLQ."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>

Dans cet exemple, chaque domaine aura une DMQ attribue de manire
individuelle.

Persistance des messages


Active MQ a introduit un mode de persistance appel Active MQ
Message Store qui joint un stockage de donnes sous forme de fichiers
avec un systme de journalisation et de mise en cache. Il affiche des

Smile Open Source Solutions dition novembre 2009


Page 62

MOMs open source

performances suprieures au systme de persistance sur fichier ou base


de donnes seule. Il affiche aussi une meilleure fiabilit, car il a t bti
pour le transactionnel.

Regardons de plus prs son fonctionnement.

Lors de l'criture d'une donne, le message rside en cache (Memoire


volatile). On construit sa rfrence (identification) qui sera stocke dans
le journal des rfrences. Priodiquement, une copie du journal des
rfrences cach est ralise sur le support persistant. Ceci reprsente le
journal des rfrences persistant. De plus, si la donne n'a pas t
consulte depuis longtemps (configurable), elle est dplace vers mdia
persistant (d'une faon transactionnelle) et ses rfrences sont mises
jour (cache et persistant).

Lors d'une lecture, on accde soit directement la donne en cache, soit


dans le mdia de stockage.

Lors d'une transaction, Active MQ ne modifie que les rfrences des


messages.

Active MQ recommande d'avoir un nombre de messages infrieur 1


million par page de cache. Le nombre de page de cache n'est pas limit.

Voici une configuration simple d'un broker utilisant l' Active MQ


Message Store :
<broker brokerName="broker" persistent="true" useShutdownHook="false">
<persistenceAdapter>
<AMQ.PersistenceAdapter directory="Active MQ-data"
maxFileLength="32mb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>

Si un objet nest plus rfrenc, il est tout simplement supprim. tre


rfrenc cest tre prsent dans un des domaines, et donc ne pas encore
avoir t consomm.

Les performances suprieures s'expliquent par le fait quActive MQ


dtecte et mesure la dure d'attente d'un message avant sa
consommation. Il optimise le stockage sur un support non volatil. De fait,
il ne stocke que les messages dont la dure de latence est grande.

Les supports de stockage sont compatibles avec les pilotes JDBC.

Rpartition de charge et haute disponibilit multi-site.


Active MQ propose diffrents modes de dploiement pour une haute
disponibilit :

Smile Open Source Solutions dition novembre 2009


Page 63

MOMs open source

Cluster de brokers: permet la gestion des pannes et la rpartition


de la charge.

Rseau de brokers : permet de grer un rseau distribu de queues


et de topics. Les messages seront transfrs de brokers en
brokers par la fonction store and forward jusqu' ce qu'ils
soient consomms. En dautres termes, un broker recevant des
messages ne correspondant aucun domaine qu'ilhberge,
enregistrera le message et le transmettra au bon broker.
L'enregistrement permet la garantie de transmission en cas
d'instabilit rseau par exemple.

Rplication en matre-esclave : permet d'avoir une redondance,


cependant Active MQ supporte uniquement un esclave par
maitre.

Partage du Message Store : C'est une alternative la rplication


matre-esclave. Dans ce cas, seul le Message Store est partag en
utilisant un systme de fichier scuris (SAN ou partage rseau)
ou une base de donnes. La charge de traitement est rpartie.

Domaine partag : Une application de Camel serait de partager le


traitement de domaine sur plusieurs brokers. Pour ce faire, il
suffit de mettre en place un domaine virtuel distribuant les
messages sur plusieurs domaines.

Active MQ peut tre configur pour connatre lemplacement des


diffrents brokers, ou bien peut les dcouvrir dynamiquement tout au
long du cycle de vie de la plateforme. La dcouverte de nouveaux brokers
se fait soit grce au broadcast, soit grce ZeroConf. ZeroConf est un
protocole utilisant conjointement l'UDP et le Multicast.

Ds lors, la scurit devient le point faible. Le risque qu'une personne


malveillante introduise un broker malveillant pour voler ou introduire
des messages est plus grand.

La dcouverte de machine peut aussi se faire par l'intermdiaire d'un


annuaire du type LDAP. Un broker mis en ligne se dclare dans un
annuaire. Les autres machines connectes lannuaire se rendent
compte de l'apparition d'une nouvelle machine et communiquent avec
lui.

Un exemple de configuration de la dcouverte par LDAP:


[...]
<networkConnectors>
<ldapNetworkConnector uri="ldap://myldap.mydomain.com:389"
base="dc=brokers-for-srv-a,dc=mydomain,dc=com"
anonymousAuthentication="true"
searchFilter="(cn=*)"
searchScope="SUBTREE_SCOPE"
networkTTL="2"
/>

Smile Open Source Solutions dition novembre 2009


Page 64

MOMs open source

</networkConnectors>
[...]

Interoprabilit avec d'autres MOMs


Active MQ fournit une passerelle JMS aisment configurable (DSL,
Spring XML). L'authentification est aussi prise en compte par les fichiers
de configuration. Ces fichiers de configuration peuvent tre intgrs
ceux dActive MQ.

Gestion de la scurit et d'un annuaire


L'authentification et la gestion des droits sont intgres sous forme de
plugins dans Active MQ. Les plugins proposs par dfaut s'appuient sur
JAAS ou sur des fichiers XML.

L'exemple le plus simple est le suivant :


[...]
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="system" password="manager"
groups="users,admins"/>
<authenticationUser username="user" password="password"
groups="users"/>
<authenticationUser username="guest" password="password"
groups="guests"/>
</users>
</simpleAuthenticationPlugin>
[...]

L'interconnexion entre brokers peut aussi tre scurise par mot de


passe et / ou chiffrement (SSL).
[...]
<networkConnectors>
<networkConnector name="brokerAbridge"
userName="user"
password="password"
uri="static://(SSL://brokerA:61616)"/>
</networkConnectors>
[...]

Il est possible d'encapsuler les connexions dans du SSL entre les clients
et un broker pour scuriser les changes. Le SSL se comporte donc
comme un connecteur part entire.

Il possible de lier la scurit de la plateforme avec un serveur LDAP.

Active MQ fournit une interface de personnalisation via des Interceptors


. Il est un ainsi possible d'tendre les possibilits de Active MQ trs
facilement. Lexemple le plus commun serait la gestion de
l'authentification. Les Interceptors permettent de modifier certains
comportements internes sans changer le cur dActive MQ et en
compatibilit avec les versions futures.

Smile Open Source Solutions dition novembre 2009


Page 65

MOMs open source

Administration
Le monitoring et l'administration de la plateforme sont proposs :

travers de l'interface JMX

au moyen dune interface web (web console)

par des messages : cette fonctionnalit est aussi disponible


distance via le protocole XMPP (Voir le Glossaire).

Active MQ propose des Advisory Message (message d'information) qui


permettent de connatre l'tat du systme. Voici des exemples de
mtriques :

les connexions clients

les files d'attentes cres et dtruites par les applications

les messages expirs

Les Advisory Messages sont organiss en queues et topics protgs par


mot de passe. On peut y accder partir dun simple client Active MQ
(JMS ou autre).

Active MQ implmente aussi des Mirrored Queues : les messages


envoys une file d'attente seront, de manire transparente, envoys
sur un Topic. Mme si cette fonctionnalit est utiliser avec prcaution,
elle permet un ou plusieurs clients de suivre l'tat d'une file d'attente.
Cest lapplication du design Wire Tap (les coutes tlphoniques
pratiques par les espions) de EIP.

De plus, Active MQ nous fournit une interface d'administration Web.


Cette interface est dmarre par dfaut l'aide de Jetty. Elle dmarre par
dfaut ladresse suivante : HTTP://0.0.0.0:8161/admin

Smile Open Source Solutions dition novembre 2009


Page 66

MOMs open source

Capture dcran de l'administration dActive MQ

Configuration et dploiement
Active MQ peut tre install sur n'importe quelle plateforme supportant
au minimum Java 5.

Active MQ est configurable en utilisant des fichiers XML intgrables


Spring. Active MQ se configure aussi l'aide de Java DSL.

Active MQ peut aussi tre configur et lanc partir d'un autre


programme (Java), c'est la notion de Embedded Broker : le broker nest
plus un processus indpendant auquel le programme sadresse par le
rseau, il tourne dans le mme processus que le programme client.

Active MQ est livr avec un ensemble d'exemples cods en Java ou en


Ruby. Tous les cas d'utilisation dActive MQ ne sont pas couverts par la
trentaine d'exemples fournis.

Dtail sur le projet

Dtail

Active MQ a t principalement dvelopp par la socit LogicBlaze, et


rachet par IONA technologies en 2007. IONA technologies tait clbre
dans les annes 90 pour son expertise CORBA.

La dernire version d'Active MQ est la 5.2.0, mais la version 4.1.x est


encore maintenue par Active MQ.

Active MQ na pas de version commerciale.

Smile Open Source Solutions dition novembre 2009


Page 67

MOMs open source

Qualit

Active MQ utilise MAVEN pour grer le projet. Le code source est


disponible sur un SVN public dans lequel on retrouve la branche de
dveloppement, mais aussi chaque version depuis la 4.0. noter que le
projet est galement disponible dans le rfrentiel MAVEN central.

Le site web du projet propose une documentation dtaille et utile.


Certains des exemples que nous citons sont issus du site. On remarque
cependant la prsence de fautes d'orthographe ainsi que de nombreuses
pages en cour de construction . Un forum pour les utilisateurs d'Active
MQ est disponible sur lequel on recense une centaine de sujets par mois.
cela, s'ajoute un bug tracker (JIRA) contenant les diffrents bugs
rfrencs par version.

Le projet possde 114 contributeurs dont une trentaine y travaille


temps plein.

Le site officiel dActive MQ est http://activemq.apache.org. Il possde un


page Rank de 8, ce qui reflte la forte popularit de loutil. Google
rfrence peu prs 14 200 pages.

La communaut dispose dun site officiel, sous forme de Wiki. Elle a


aussi une mailing liste, un forum et un salon IRC. Le temps de rponse
moyen est de l'ordre de 2 jours. Remarquons que certaines questions ne
trouvent pas de rponses.

Signalons aussi le livre Active MQ in Action , aux ditions MEAP. Ce


livre, disponible uniquement en version anglaise, est une bonne lecture
pour apprhender et utiliser Active MQ. Son existence mme tmoigne
de lintrt suscit par le produit.

Rfrences

Active MQ est utilis par de nombreux projets faisant partie de la


fondation Apache (Geronimo, Service Mix, Jet Speed, Apache Directory),
mais galement par des projets extrieurs cette fondation (Eclipse,
Active Cluster, Mule, Open IM).

Aucune autre rfrence client n'est indique sur le site.

Smile Open Source Solutions dition novembre 2009


Page 68

MOMs open source

MOM Open Message Queue (OMQ)

Prsentation
OMQ est le Middleware Orient Message de Sun. Il a t dvelopp pour
fonctionner conjointement avec GlassFish (Open ESB).

Le principal contributeur est la communaut Sun / Java.

OMQ a t ralis pour fonctionner avec GlassFish, le


serveur d'application de Sun. Cependant, OMQ peut
facilement fonctionner tout seul ou avec d'autres types de
serveur d'application Java.

OMQ est distribu sous deux licences : CDDL ou GPL v2.

Caractristiques principales du produit

Langages d'implmentation

Les sources, rcuprables du site Internet de la solution sont mal


organises. D'une part, on constate la prsence de binaires, de fichiers C
et autres. De plus, il n'y a pas de systme de compilation automatique du
type MAVEN ou ANT.

Sun fournit nanmoins une documentation indiquant comment compiler


la solution (via NetBeans).

On remarque la prsence de rpertoires ( la racine de src) nomms


Solaris et Win32 (Windows), rfrent des bouts de code spcifique. Qui
a dit que Java tait multiplateformes ?

Dans cet amas de fichiers, on retrouve mme le code de l'interface


d'installation.

En ce qui concerne le code java en lui mme, il est bien document et


semble respecter les standards.

Langages pris en charge

Les seuls langages pris en compte sont :

Java via JMS 1.1 ill ne gre pas le JMS 1.0.2)

C : l'API est propritaire Java, sa spcification est documente par


Sun l'adresse suivante :
http://docs.sun.com/app/docs/doc/819-7756

Smile Open Source Solutions dition novembre 2009


Page 69

MOMs open source

On note le petit nombre de langages pris en compte, ce qui constitue une


faiblesse.

Protocoles pris en charge

Les protocoles externes pris en charge sont les suivants :

UMS comme Universal Messaging System : C'est un protocole de


communication comparable AMQP. Sun ne le met gure en
avant, tant donnes ses limitations en termes fonctionnalits et
de performance. UMS est bas sur du XML, ce qui alourdit un
peu les changes. Sun fournit sa spcification l'adresse
suivante : HTTPS://mq.dev.java.net/4.3-
content/ums/umsIntro.html

A laide de passerelles, OMQ gre aussi le :

SOAP : sur un support HTTP partir d'un serveur d'application.

HTTP : passerelle sur un serveur d'application.

Il y a donc peu de protocoles pris en compte.

Le protocole interne dOMQ nest pas document.

Interfaces prises en charge

Selon les classes d'interface :

Messagerie

JCA 1.5 sous Java

JMS 1.1 sous Java

API C : Elle est propritaire Java, sa spcification est


documente par Sun l'adresse suivante :
HTTP://docs.sun.com/app/docs/doc/819-7756

Administration, Monitoring et configuration

JES : Java Monitoring plateforme Support

JAAS

Gestion des messages

OMQ ne gre pas la priorit des messages.

Smile Open Source Solutions dition novembre 2009


Page 70

MOMs open source

OMQ gre la compression et la dcompression des messages la vole.


Un exemple :
MyMessage.setBooleanProperty(JMS_SUN_COMPRESS,true);

Une des nouvelles fonctionnalits originales est la gestion des WildCard


Topics . En autorisant l'utilisation d'une syntaxe particulire, OMQ
autorise l'envoi d'un message plusieurs domaines. Un exemple simple
est l'envoi d'un message vers toust les Topics. Pour ce faire, on envoie un
message vers un topic se nommant * . Voici quelques autres exemples :
Tableau 1 : Exemple de WildCard

Paterns Rsultats

*.sun.com Retourne toute chaine de caractre


finissant avec .sun.com

(quark|energy).sun.com Retourne soit quark.sun.com ou


energy.sun.com

*.* Retourne toute chaine de caractre ayant


un point au milieu.

Pour finir avec la gestion des messages, OMQ gre la validation des
contenus XML : XML Schema Validation .

Traitement des messages

Le traitement des messages n'est pas pris en compte par OMQ.

Gestion des transactions

La gestion de transaction est offerte la fois partir du C et du Java.


OMQ propose aussi des interfaces du type XA / JTA.

La gestion interne des transactions n'est pas spcifie.

Persistance des messages

Il est possible de raliser de la persistance sur le systme de fichier. La


persistance est aussi disponible dans des bases de donnes telles que :
Oracle, MySQL, PostgresSQL, Java DB (Derby), toutes accdes via
JDBC.

Rpartition de charge et haute disponibilit multi site.

Deux modes sont disponibles :

Smile Open Source Solutions dition novembre 2009


Page 71

MOMs open source

Cluster Normal : Ce mode noblige pas la persistance. Il permet la


rpartition manuelle de la charge sur plusieurs brokers. La
disponibilit de la plateforme se trouve aussi amliore.
Cependant, si un ou plusieurs brokers venaient mourir, leurs
messages seraient perdus.

High-availability (Haute disponibilit) : En introduisant de la


persistance, OMQ amliore encore la fiabilit de la plateforme.
Mme si tous les brokers meurent au mme moment, aucun
message ne sera perdu (les messages ayant t pris en compte).
Cette solution amne de moindres performances.

OMQ ne gre pas de rplication Master/Slave.

Il ny a pas de systme de dcouverte automatique de broker.

OMQ se montre ainsi limit concernant les problmatiques d'entreprise.

Interoprabilit avec d'autres MOMs

Sun ne fournit aucun bridge JMS ou autre. Il est ainsi notre charge
den crer ou d'en adapter un (open source) nos besoins.

Gestion de la scurit et d'un annuaire

OMQ support SSL / TLS comme mode d'encryptions des messages.Celui-


cii peut se placer aussi bien entres applications et brokers quinter-
brokers.

Les applications clientes (consommatrices ou productrices) peuvent se


connecter grce un couple (nom d'utilisateur, mot de passe). Les mots
de passe sont encods l'aide de l'algorithme MD5.

OMQ gre les groupes d'utilisateurs. On peut personnaliser les accs aux
lments des brokers (queues, topics, administration, monitoring) par
utilisateurs ou par groupes.

Les supports de stockage des lments de scurit sont:

Fichier de configurations sous format XML

LDAP

Les proprits suivantes contrlent le comportement dOMQ vis--vis du


LDAP
imq.user_repository.ldap.server
imq.user_repository.ldap.principal
imq.user_repository.ldap.password
imq.user_repository.ldap.propertyName
imq.user_repository.ldap.base
imq.user_repository.ldap.uidattr

Smile Open Source Solutions dition novembre 2009


Page 72

MOMs open source

imq.user_repository.ldap.usrfilter
imq.user_repository.ldap.grpsearch
imq.user_repository.ldap.grpbase
imq.user_repository.ldap.gidattr
imq.user_repository.ldap.memattr
imq.user_repository.ldap.grpfilter
imq.user_repository.ldap.timeout
imq.user_repository.ldap.ssl.enabled

La gestion de l'authentification et de l'autorisation peut tre


personnalise l'aide de l'API JAAS.

Administration

OMQ fournit aussi des outils d'administration en ligne de commande


permettant, laide de scripts (shell ou autres), dautomatiser certaines
tches. A titre dexemple, imqadmin et imqcmd permettent de grer
un parc de brokers, de recharger une nouvelle configuration, Ces
outils se montrent ainsi particulirement utiles.

Un monitoring du middleware est possible par messages. Il suit les


mmes concepts que les Advisory Messages dActive MQ.

La plateforme OMQ implmente JMX.

Configuration et dploiement

OMQ est ralis en Java. Voici la liste des systmes d'exploitation dont
Sun annonce le support :

Solaris 9 ou 10

RedHat Entreprise Linux Advanced/ Entreprise Server

Windows XP / 2000 Server / 2009 Server

Le fonctionnement sur une Linux Debian semble tout fait satisfaisant.

Toujours selon Sun, OMQ peut aussi bien tourner sous une architecture
Sparc que x86. Il requiert un minimum de 256 Mo de RAM, mais Sun
recommande 2 Go de Ram pour de la HA ou pour de gros volumes de
messages.

Lors du tlchargement du paquet du site de Sun, on remarque la


prsence d'un installateur graphique.

En ce qui concerne les exemples, ils sont au nombre de 41, illustrant :


JMS, JMX, le monitoring, et SOAP. On constate aussi la prsence d'une
dizaine d'exemples montrant l'utilisation de l'API C. Les exemples se
limitent l'utilisation des services de messageries et de monitoring
dOMQ. Dommage quaucun exemple ne montre la mise en place d'une
plateforme en cluster ou high-availability (haute disponibilit).

Smile Open Source Solutions dition novembre 2009


Page 73

MOMs open source

Un autre point regrettable est que le lancement des exemples est faire
manuellement tout en manipulant le classpath du compilateur et de la
VM.

La configuration de la solution se fait grce des fichiers non XML dont


voici un exemple :
imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost

Cette ligne informe OMQ de la liste des brokers disponibles.

Il est vraiment plus simple et pratique dutiliser les scripts fournis que de
remplir les fichiers de configuration, ce qui est bien dommage.

Dtail sur le projet

Dtails

La version dOMQ tudi est la 4.3. On remarque une assez consquente


liste de bugs dont certains sont particulirement gnants :

Impossibilit de parcourir une queue qui est gre par un autre


broker (Browse).

La persistance avec HADB est limite en nombre de messages (10


000) et en taille (10 Mo).

la liste complte des bugs est cette adresse :


HTTP://docs.sun.com/app/docs/doc/820-6360/aembi?a=view

Il est possible dobtenir une version commerciale. Cependant, aucun


dtail nest fourni.

Qualit du projet

Sun fournit un Wiki contenant des exemples de code. La communaut


dispose dun Forum, une mailing-list ainsi qu'un systme de gestion des
tickets.

Le site prend parfois plus de 3 secondes s'afficher. Il nous est arriv


plusieurs occasions que le site ne soit plus disponible. Tous ces dfauts
suggrent que le projet nest pas trs actif, ou en dperdition.

Toutefois, si lon sintresse la ractivit des contributeurs, on


constante un dlai moyen de rponse de l'ordre de l'heure, ce qui est fort
apprciable.

Sur le bug tracker, il existe encore des bugs ouverts depuis prs d'un an,
et de mme certaines questions sur le forum n'ont pas trouv de rponse
depuis plusieurs mois.

Smile Open Source Solutions dition novembre 2009


Page 74

MOMs open source

Selon Google, le site officiel HTTP://mq.dev.java.net est constitu de 62


pages et obtient un page rank de 6.

Rfrences

Aucune information n'est donne sur les clients ou utilisateurs dOMQ.

MOM JBoss Messaging (JBM)

Prsentation
JBoss a donn naissance JBoss
Messaging (JBM) devenu ensuite
JBoss Queue (JBQ), actuellement en
sa version 1.4.0 SP3.

Ds 2006, JBM a t ralis dans


l'ide d'une intgration avec les
produits JBoss. Il peut, modulo d'assez lourdes manipulations,
fonctionner en mode standalone .

La filiation RedHat lui confre une place particulire parmi les


middlewares d'entreprise Open Source, et d'autant plus qu'il est sous
licence LGPL.

JBM a t ralis, comme son nom l'indique, par la communaut JBoss


et RedHat, leader mondial dans le domaine de l'open source.

Caractristiques principales du produit

Langages d'implmentation

Rcupr partir du site Internet de JBM, le code source est assez bien
organis. Un systme de compilation automatique du type MAVEN est
prsent.

Quant aux sources, elles ne sont pas toujours bien formates. La


documentation du code est revoir srieusement et certaines mthodes
sont vraiment trop volumineuses.

Langages pris en charge

Le seul langage de programmation pris en charge par JBoss est le Java,


et ceci par l'intermdiaire de l'API JMS.

Des quatre MOMs de notre slection, il est celui qui prsente le moins de
connectivit.

Smile Open Source Solutions dition novembre 2009


Page 75

MOMs open source

Protocoles pris en charge

JBM ne gre quun seul protocole externe dont la documentation est


introuvable. Toutefois, la roadmap du projet indique que loutil compte
implmenter STOMP.

La version 2 de JBM, en version Beta implmente dj le protocole


AMQP.

Des quatre MOMs compars ici, il est aussi le plus pauvre dans cette
catgorie.

Interfaces prises en charge

Selon les classes d'interface :

Messagerie

JMS 1.1 : depuis du Java

JCA 1.5 : depuis du Java

Administration, Monitoring et configuration

JAAS : depuis du Java

JMX : depuis du Java


Rien de bien nouveau.

Gestion des messages

JBM gre la priorit des messages. JBM rorganise l'ordre de dlivrance


des messages suivant leur priorit.

JBM ne gre ni la hirarchie des messages ni le concept de groupe de


messages.

Traitement des messages

Les modifications la vole des messages ne sont pas prises en compte


par la solution de JBoss.

Il est possible, de programmer l'envoi de message, c'est--dire de dfinir


une proprit particulire qui ordonne au broker de rendre un message
disponible une heure donne.

Gestion des transactions

Le comportement de la DMQ est standard.

Smile Open Source Solutions dition novembre 2009


Page 76

MOMs open source

La gestion interne des transactions n'est pas prcise.

Persistance des messages

JBM support plusieurs mdias de stockage : Hypersonic, Oracle, Sybase,


MS SQL Server, Postgres et MySQL. Ils sont tous compatibles JDBC.

Par dfaut, cest Hypersonic qui est choisi. Une note de JBoss fait
remarquer que Hypersonic ne devrait pas tre utilis en production
cause :

de sa gestion limite des transactions.

de son mauvais comportement forte charge.

Un exemple de configuration pour Hypersonic est :


<mbean code="org.jboss.messaging.core.JMX.JDBCPersistenceManagerService"
name="jboss.messaging:service=PersistenceManager"
xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.XML">

<depends>jboss.JCA:service=DataSourceBinding,name=DefaultDS</depends>
<depends optional-attribute-
name="TransactionManager">jboss:service=TransactionManager</depends>
<attribute name="DataSource">java:/DefaultDS</attribute>
<attribute name="CreateTablesOnStartup">true</attribute>
<attribute name="UsingBatchUpdates">true</attribute>
<attribute name="SqlProperties"><![CDATA[
CREATE_DUAL=CREATE TABLE JBM_DUAL (DUMMY INTEGER, PRIMARY KEY
(DUMMY)) ENGINE = INNODB
CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (CHANNEL_ID
BIGINT, MESSAGE_ID BIGINT, TRANSACTION_ID BIGINT, STATE CHAR(1), ORD
BIGINT, PAGE_ORD BIGINT, DELIVERY_COUNT INTEGER, SCHED_DELIVERY BIGINT,
PRIMARY KEY(CHANNEL_ID, MESSAGE_ID)) ENGINE = INNODB
CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF
(TRANSACTION_ID)
CREATE_IDX_MESSAGE_REF_ORD=CREATE INDEX JBM_MSG_REF_ORD ON
JBM_MSG_REF (ORD)
. . .
SELECT_EXISTS_REF_MESSAGE_ID=SELECT MESSAGE_ID FROM JBM_MSG_REF
WHERE MESSAGE_ID = ?
UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ?
WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE
CHANNEL_ID = ?
LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP,
PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
. . .
]]></attribute>
<attribute name="MaxParams">500</attribute>
<attribute name="UseNDBFailoverStrategy">true</attribute>
</mbean>

La partie du milieu remplace par des . . . reprsente la dfinition des


commandes SQL correspondant aux actions possibles du broker. des
fins doptimisation par exemple, il est possible de personnaliser trs
finement la gestion de la persistance par le MOM.

Smile Open Source Solutions dition novembre 2009


Page 77

MOMs open source

Rpartition de charge et haute disponibilit multi-site

JBoss garantit l'entire compatibilit avec une architecture en cluster


aussi bien pour le mode point point que le mode par abonnement.

Les messages peuvent tre amens tre routs de cluster en cluster


considrant la charge de chaque machine ainsi que leur performance :
cest le concept de Store and Forward .

Il est aussi possible de partager une mme base de donnes.

JBM gre aussi la dcouverte automatique de brokers par multicast. La


rplication en maitre esclave est aussi gre.

Smile Open Source Solutions dition novembre 2009


Page 78

MOMs open source

Faisons une petite note sur la synchronisation des diffrents stores


(mdia de stockage). Une gestion synchrone implique la mise en attente
du client JMS jusqu' confirmation de l'criture sur les deux brokers .
Suivant le nombre et la taille des messages, ce processus peut prendre
plus ou moins de temps. l'inverse une gestion asynchrone signifie que
le broker matre ragira comme s'il n'y avait pas de broker esclave et
rendra la main au client ds la prise en compte du message.

Interoprabilit avec d'autres MOMs

La configuration de JBM est fournie avec une passerelle JMS. Le site de


JBoss nous propose d'ailleurs un tutoriel portant sur la configuration
d'une passerelle entre JBoss MQ et JBM (JBoss Messaging), car lun et
lautre nutilisent pas le mme protocole interne.

Le protocole interne n'est pas ouvert, limitant l'accs direct la


plateforme MOM.

Gestion de la scurit et d'un annuaire

Selon les spcifications de JBoss, la scurit est gre par JBM l'aide
de fichiers de configuration. Par ailleurs, elle peut tre personnalise par
JAAS.

La gestion de la scurit est ralise par utilisateurs et par rles. Par


dfaut, les informations d'authentification sont issues de fichiers XML. Le
MOM a aussi la possibilit de se connecter un LDAP.

Le chiffrement des donnes l'aide de SSL / TLS est aussi support.

Smile Open Source Solutions dition novembre 2009


Page 79

MOMs open source

Administration

La plateforme JBM implmente JMX. Cependant, aucune interface


graphique n'est fournie.

JBM a introduit quelques spcificits au niveau de limplmentation du


JMS. Sans dnigrer la spcification 1.1, JBM rajoute quelques sucreries.
Par exemple, on peut maintenant rcuprer les statistiques sur la
plateforme sans passer par JMX. (Mthode intitule Message
Counter ). Rappelons nanmoins que l'utilisation de ces fonctions
supprime un avantage majeur de JMS, la portabilit du code. utiliser
avec modration.

Configuration et dploiement

L'utilisation de JBM travers JBoss Application Server (JAS) est trs


aise. Il suffit de les tlcharger (JAS + JBM), de configurer les variables
d'environnement et d'excuter un script de configuration situ dans le
dossier JBM.

Notons toutefois que l'installation de JBM en standalone est une


opration assez lourde et n'est vraiment pas dans lesprit JBoss . On
comprend, aprs utilisation de l'outil qu'il est vraiment intgr JAS. Par
exemple, les fichiers de configuration, sous forme de XML, sont
compltement intgrs JBA.

Une trentaine d'exemples sont fournis. Ils traitent entre autres de :


Passerelle JMS, Clustering, Web Service, Reprise sur erreur, le
chiffrement des transmissions.

Dtail sur le projet

Qualit du Projet

Malgr sa jeunesse, la communaut de dveloppeur JBM dispose dun


SVN, un forum et un service de suivi de tickets dincidents.

Les utilisateurs ont, quant eux : un Wiki et un forum. Ils sont souvent
indisponibles.

Le site officiel de JBM possde 17 Pages


(HTTP://www.jboss.org/jbossmessaging/ )

Son page Rank est de 6.

Un support technique est disponible via mail, chat (IRC) et forum. Aucun
support commercial n'est disponible pour ce produit. Cependant, les
produits JBoss intgrant JBM possdent quant eux un support
commercial via email uniquement.

Smile Open Source Solutions dition novembre 2009


Page 80

MOMs open source

Une quipe de 4 personnes s'occupe plein temps du projet.

Un Wiki et des documentations sont fournis par la communaut


JBoss.

Rfrences

Le site internet de JBoss prsente les entreprises qui ont adoptes leurs
produits, qui incluent Enernoc, Scania, Iwbank, Covad, AcXium.

Autres

La version 2.0 de JBM est en prparation dans les bunker top secret
de la communaut JBoss. Cette version apportera des nouveauts par
lesquelles:

AMQP / STOMP

Conception bas sur POJO

Gestion de gros messages (exemple : 8 Go)

partir de cette version, il sinscrira dans la catgorie des


concurrents srieux dActive MQ

Smile Open Source Solutions dition novembre 2009


Page 81

MOMs open source

COMPARATIF
JORAM AMQ OMQ JMQ

Langage Java
Protocoles Interne (non
document /

document /
ouvert)
AMQ.P
Open Wire
STOMP
Passerelles
fournies
SOAP
RestFul
Mail
FTP
JavaScript / Ajax
Interfaces JMS 1.0.2b
JMS 1.1
JCA
JMX
JAAS
JNDI
JSE
Langages Java
C / C++
JavaScript
.Net
Delphi

Smile Open Source Solutions dition novembre 2009


Page 82

MOMs open source

JORAM AMQ OMQ JMQ


Perl
PHP
Pike
Python
Ruby
Gestion des Hirarchie de Topic
Messages

Priorit
WildCard
Groupe de
Messages

Destination
Virtuelle

EIP
Persistance Systme de Fichier
(Normal /

Optimis)
Compatible JDBC
Topologie Configuration
Multi-site
Rplication
Dcouverte par
Multicast

Dcouverte par
Broadcast

Dcouverte par
LDAP

Intgration E.J.B
Spring
Standalone
Configuration Fichier (XML / Non
standard/N)

la vol et
chaud

Smile Open Source Solutions dition novembre 2009


Page 83

MOMs open source

JORAM AMQ OMQ JMQ


Administration
/ Monitoring
Par Messages
Interface graphique
fournie

Interface script
fournie

Scurit SSL / TLS
Gestion Utilisateur
Gestion de Groupe
Gestion des droits
par domaine

JAAS
Autre MOM Passerelle JMS
fournie

Divers Version 5.2 5.2 4.2 1.4.4
Nombre de 24 114 ? 4
contributeur
Nombre de pages 73 14200 62 17
du site
Page Rank du site 4 8 6 6

Licence LGPL Apache 2 CDDL ou LGPL


GPL v2

Smile Open Source Solutions dition novembre 2009


Page 84

MOMs open source

BENCHMARK DE DBIT

Scnario de test
Ce test de performance a pour but de mettre en exergue les limites des
MOMs selon la charge inflige. Pour ce faire, nous allons mettre en place
un MOM et lui envoyer des messages dbit constant et pendant une
priode de 10 secondes. Nous allons mesurer pour chaque message le
temps coul de l'envoi, jusqu' sa rception.

Le test est organis en phases de dures gales. Chaque phase se


caractrise par un dbit constant. Pour chaque dbit, nous obtenons
plusieurs valeurs. Afin d'viter toute interfrence, chaque phase est
spare d'une autre par une vidange du MOM. Cette vidange se fait
naturellement en attendant que tous les messages soient consomms.

Nous rptons ce test avec trois tailles de messages diffrentes : 0.1, 1 et


10 Ko.

Ralisation du test
Aprs la mise en place d'un MOM, nous lanons les programmes
producteur et consommateur .

Le programme producteur agrge plusieurs producteurs JMS. En effet,


afin de soutenir un dbit constant, le programme se divise en multiples
threads. On obtient ainsi un producteur par seconde dlivrant N
messages par intervalle de temps. Le nombre N correspond donc au
dbit souhait. Chaque message est dat et identifi. Afin de vraiment
soutenir le dbit souhait, chaque producteur ne peut envoyer que 1000
Messages.

Le programme consommateur , quant lui, ne reoit pas


ncessairement les messages dans le bon ordre. Il les rcolte, les
horodates, les analyses et les regroupe par seconde. chaque fin de
phase, il produit ses rsultats. Lanalyse des messages se fait la fin afin
de ne pas perturber le test.

Configuration
La configuration des deux outils est issue de celle par dfaut. Elle est
pure de tout ce qui n'est pas ncessaire. Le mode de transport est le
TCP. Aucun chiffrement particulier n'a t mis en place et aucune limite
de mmoire au niveau de la configuration non plus. Au niveau de la JVM,
7 Go lui ont t allous pour chaque broker, consommateur et
producteur.

Smile Open Source Solutions dition novembre 2009


Page 85

MOMs open source

La machine
Les producteurs, le consommateur et le broker tournent sur des
machines EC2 distinctes, alloues sur le cloud Amazon, du type :

4 units de traitement 64 bits

7.5 Go de R.A.M

850 Go de Disque dur

Chaque unit de traitement est quivalente 1.0-1.2 GHz Opteron 2007


ou Xeon 2007.

Rsultats du test
Nous allons exprimer chaque rsultat selon le dbit de rception par
rapport au dbit denvoi.

Smile Open Source Solutions dition novembre 2009


Page 86

MOMs open source

Active MQ avec Persistance

Active MQ, sans Persistance (volatile)

Smile Open Source Solutions dition novembre 2009


Page 87

MOMs open source

Joram avec Persistance

JORAM sans Persistance (volatile)

Smile Open Source Solutions dition novembre 2009


Page 88

MOMs open source

Analyse
On remarque que les deux outils ne ragissent vraiment pas de la mme
manire.

Dune part, le dbit de rception dactive MQ se stabilise tandis que le


dbit de rception de Joram chute progressivement au fur et mesure
que le dbit en entre augmente.

Active MQ supporte mieux la charge que JORAM.

Dautre part, JORAM nest pas aussi sensible que Active MQ la taille
des messages. On remarque que la diffrence entre les dbits de
rception des messages de diffrentes tailles est plus grande dans le cas
dActive MQ que celle de JORAM.

Une chose est sre, Active MQ est bien plus performant que JORAM,
petite ou forte charge. Voici un tableau rcapitulatif des dbits de
rception.

Dbit possible, en messages par seconde

ACTIVE MQ JORAM

Taille des messages Max Moyenne Max Moyenne

P 2 400 2 000 320 n/a


0.1 Ko
SP 9 000 9 000 330 n/a

P 2 350 1 900 270 n/a


1 Ko
SP 9 000 9 000 320 n/a

P 1 300 1 200 270 n/a


10 Ko
SP 4 000 4 000 320 n/a

Notons que P signifie ici avec Persistance , et SP signifie Sans


Persistance .

Smile Open Source Solutions dition novembre 2009


Page 89

MOMs open source

On remarque aussi que la diffrence entre persistance et sans


persistance est trs grande pour Active MQ. Le dbit de rception varie
avec un facteur de 3.

Au final, on retiendra que, dans un mode sans persistance, Active MQ


achemine jusqu 9000 messages par seconde, et jusqu 2000 avec
persistance.

Smile Open Source Solutions dition novembre 2009


Page 90

MOMs open source

SYNTHSE
La premire question nest pas quelle solution de MOM choisir.
Limportant est dabord de bien identifier les bnfices importants quun
MOM peut apporter dans un systme dinformation, et cest pourquoi
nous nous sommes attachs en premier lieu de bien dcrire les services
rendus par un MOM, et la manire dont il pouvait simplifier et fiabiliser
les interactions entre applications.

Les MOMs sont encore trop peu connus des architectes, et on voit
souvent mettre en uvre des changes FTP, ou bien des appels
synchrones trop fragiles, ou autres moyens dchanges rudimentaires,
voir archaques. Les MOMs apportent une solution ouverte, flexible et
extensible une diversit de problmes dintgration. On peut dployer
un MOM dans un contexte hautement htrogne, mais il a toute sa
place galement au sein dune simple plateforme web, un peu haut de
gamme.

Une fois que larchitecte est convaincu quun middleware de type MOM
est le bon socle dchange pour sa plateforme, il lui reste faire le choix
dun produit. Loffre est riche, et comme on la vu, tous les produits
convergent autour de la spcification JMS, ce qui offre un niveau de
service de base commun, mais aussi permet de concentrer lexpertise.

Lorsque nous faisons, dans nos livres blancs, un panorama des


solutions open source du march, il arrive souvent que lon ne puisse
conclure la supriorit claire dun produit en particulier. La
conclusion est alors que selon les besoins spcifiques dun projet, selon
le contexte dinsertion, tel ou tel produit arrivera en tte.

Mais sur le sujet des MOMs, force est de constater quun produit sort du
lot : notre tude nous amne conclure que Apache Active MQ est la
meilleure des quatre solutions tudies :

Elle a la prennit et la lgitimit de la fondation Apache, sappuie


sur un socle de produits de qualit de la fondation, et semble
faire converger une communaut de dveloppement plus large et
active.

Elle offre une couverture fonctionnelle plus large, sur peu prs
tous les plans, avec en particulier lintgration possible de
traitements et daiguillages.

Elle est particulirement extensible, et peu satisfaire aussi bien des


besoins simples que de vastes problmatiques dentreprise.

Et enfin, elle prsente des performances suprieures.

Smile Open Source Solutions dition novembre 2009


Page 91

MOMs open source

Pour nous, laffaire est entendue, Active MQ nous semble tre le meilleur
choix. Sauf bien sr si lon a par ailleurs dj dploy une infrastructure
base sur les autres lignes de produits : Redhat/JBoss, SUN/GlassFish,
ou OW2/Jonas.

La question ensuite, sera dajuster lambition qui est donne au


middleware dans son infrastructure applicative. Lavantage des MOMs
est leur relative simplicit : ils ne prtendent pas tout faire, mais ce quils
font ils le font de manire fiable et performante. La limitation essentielle
des MOMs, comme on la vu, est quils ne soccupent pas du contenu du
message, et supposent donc que les applications parlent le mme
langage, se sont entendues sur un format commun. Dans un
environnement htrogne, incluant du patrimoine ancien, on voit bien
quon ne pourra faire cette hypothse.

Active MQ, avec lintgration de Apache Camel, prend des aspects dEAI,
et peut prendre en charge des transformations de messages et
conversions de formats, mais de manire encore relativement limite.

Pour prendre en charge une plus forte htrognit, et souvrir vers un


plus large ventail de modes de connexions et de protocoles, il faudra
considrer un ESB, Enterprise Service Bus, base dune architecture SOA
globale. Le principal ESB dans le monde de lopen source est MULE, de
MuleSource, que nous apprcions particulirement chez Smile.

Mais en matire darchitecture, il est essentiel de savoir ajuster


lambition au problme, et les solutions les plus sophistiques ne sont
pas toujours les plus appropries.

Les simples MOM, et Active MQ en particulier, restent donc des produits


extrmement pertinents et utiles pour construire des plateformes
distribues, ou permettre linteroprabilit dun petit nombre
dapplications.

Depuis plusieurs annes, Smile a construit une expertise des middleware


au service darchitectures extensibles et performantes, et nos experts
seront heureux de vous aider tirer le meilleur parti dune solution MOM
open source.

Smile Open Source Solutions dition novembre 2009


Les livres blancs Smile
Introduction lopen source Les 100 bonnes pratiques du web
et au Logiciel Libre
Cent et quelques bonnes pratiques du web ,
usages et astuces, incontournables ou tout
Son histoire, sa philosophie, ses grandes figures,
simplement utiles et qui vous aideront construire
son march, ses modles conomiques, ses
un site de qualit. [26 pages]
modles de support et modles de dveloppement.
[52 pages] ERP/PGI: les solutions open source
Gestion de contenus : les solutions Des solutions open source en matire dERP sont
open source tout fait matures et gagnent des parts de march
dans les entreprises, apportant flexibilit et cots
Dans la gestion de contenus, les meilleures rduits. [121 pages]
solutions sont open source. Du simple site la
solution entreprise, dcouvrez loffre des CMS open GED : les solutions open source
source. [58 pages] Les vraies solutions de GED sont des outils tout
fait spcifiques ; lopen source reprsente une
Portails : les solutions open source alternative solide, une large couverture
fonctionnelle et une forte dynamique. [77 pages]
Pour les portails aussi, lopen source est riche en
solutions solides et compltes. Aprs les CMS, Rfrencement : ce quil faut savoir
Smile vous propose une tude complte des
meilleures solutions portails. [50 pages] Grce ce livre blanc, dcouvrez comment
optimiser la "rfrenabilit" et le positionnement
200 questions pour choisir un CMS de votre site lors de sa conception. [45 pages]

Toutes les questions quil faut se poser pour choisir


Dcisionnel : les solutions open source
loutil de gestion de contenu rpondra le mieux
Dcouvrez les meilleurs outils et suites de la
vos besoins. [46 pages]
business intelligence open source.
Les livres blancs Smile sont [78 pages]
Conception d'applications web
tlchargeables Collection Systme et Infrastructure :
gratuitement sur Synthse des bonnes pratiques pour l'utilisabilit
et l'efficacit des applications mtier construites en Virtualisation open source [41 pages]
www.smile.fr technologie web. [61 pages]
Architectures Web open source [177 pages]
Les frameworks PHP Firewalls open source [58 pages]

Une prsentation complte des frameworks et VPN open source [31 pages]
composants qui permettent de rduire les temps
Cloud Computing [42 pages]
de dveloppement des applications, tout en
amliorant leur qualit. [77 pages] Middleware [91 pages]

Contactez-nous, nous serons heureux de vous prsenter nos ralisations de manire plus approfondie !
+33 1 41 40 11 00 / sdc@smile.fr