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 / [email protected]