ORIENTS
MESSAGES
I .T I S O P E N
Page 2
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.
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
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
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.
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
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
Par exemple, les outils qui permettent des applications d'invoquer les
services d'un SGBD sont une catgorie particulire de middlewares.
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.
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.
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.
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.
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.
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.
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.
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.
Un service fiable
Un service asynchrone
Autres services
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.
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.
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..
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.
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
JMS Provider
JMS Consumer
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
JMS Domains
Destination
Les objets destinations sont des objets servant identifier la cible des
messages envoyer ou recevoir, c'est--dire des domaines, queues et
topics.
Le corps des messages peut tre encod selon les 5 Message Types
disponibles :
stockInfo = message.getText();
StreamMessage
stockName = message.readString();
stockValue = message.readDouble();
stockTime = message.readLong();
stockDiff = message.readDouble();
stockInfo = message.readString();
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.
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.
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.
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:
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.
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.
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.
Rappelons que, par dfinition, JMS est une API pour l'environnement
Java. Dans les exemples prcdents, les applications sont donc
ncessairement Java.
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.
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.
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 ?
1.Recevoir un message
2.Traiter le message
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.
Transactions JMS
Transactions XA
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.
Pour garantir que les messages ne seront pas perdus, le MOM doit donc
les stocker de manire scurise, de manire persistante.
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.
Fonctionnalits avances
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.
Voici la liste des catgories rfrences par EIP ainsi que quelques
exemples :
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.
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.
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.
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>
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 ).
spcifies, mais le plus souvent il s'agit d'un simple round robin, c'est--
dire une attribution cyclique, tour de rle .
Recevoir un message
Effectuer le traitement
Acquitter le message.
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.
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.
Partage du stockage
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.
Active MQ
JORAM
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.
Implmentation
Architecture de JORAM
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.
Nous navons pas trouv, dans les documentations fournies par JORAM,
dinformation sur les optimisations possibles de la gestion de la
persistance.
JORAM peut tre configur pour utiliser des connexions SSL / TLS.
Administration
Il nous semble que cette interface devrait tre surtout utilise des fins
de dmonstration.
Configuration et dploiement
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.
Dtail
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.
Qualit
Rfrences
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.
Et Active MQ est son tour utilis par quelques autres grands projets :
Langages d'implmentation
Messagerie
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<to uri="seda:accueil"/>
</otherwise>
</choice>
</route>
</camelContext>
Dans cet exemple, chaque domaine aura une DMQ attribue de manire
individuelle.
</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.
Administration
Le monitoring et l'administration de la plateforme sont proposs :
Configuration et dploiement
Active MQ peut tre install sur n'importe quelle plateforme supportant
au minimum Java 5.
Dtail
Qualit
Rfrences
Prsentation
OMQ est le Middleware Orient Message de Sun. Il a t dvelopp pour
fonctionner conjointement avec GlassFish (Open ESB).
Langages d'implmentation
Messagerie
JAAS
Paterns Rsultats
Pour finir avec la gestion des messages, OMQ gre la validation des
contenus XML : XML Schema Validation .
Sun ne fournit aucun bridge JMS ou autre. Il est ainsi notre charge
den crer ou d'en adapter un (open source) nos besoins.
OMQ gre les groupes d'utilisateurs. On peut personnaliser les accs aux
lments des brokers (queues, topics, administration, monitoring) par
utilisateurs ou par groupes.
LDAP
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
Administration
Configuration et dploiement
OMQ est ralis en Java. Voici la liste des systmes d'exploitation dont
Sun annonce le support :
Solaris 9 ou 10
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.
Un autre point regrettable est que le lancement des exemples est faire
manuellement tout en manipulant le classpath du compilateur et de la
VM.
Il est vraiment plus simple et pratique dutiliser les scripts fournis que de
remplir les fichiers de configuration, ce qui est bien dommage.
Dtails
Qualit du projet
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.
Rfrences
Prsentation
JBoss a donn naissance JBoss
Messaging (JBM) devenu ensuite
JBoss Queue (JBQ), actuellement en
sa version 1.4.0 SP3.
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.
Des quatre MOMs de notre slection, il est celui qui prsente le moins de
connectivit.
Des quatre MOMs compars ici, il est aussi le plus pauvre dans cette
catgorie.
Messagerie
Par dfaut, cest Hypersonic qui est choisi. Une note de JBoss fait
remarquer que Hypersonic ne devrait pas tre utilis en production
cause :
<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>
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.
Administration
Configuration et dploiement
Qualit du Projet
Les utilisateurs ont, quant eux : un Wiki et un forum. Ils sont souvent
indisponibles.
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.
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
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
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.
Ralisation du test
Aprs la mise en place d'un MOM, nous lanons les programmes
producteur et consommateur .
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.
La machine
Les producteurs, le consommateur et le broker tournent sur des
machines EC2 distinctes, alloues sur le cloud Amazon, du type :
7.5 Go de R.A.M
Rsultats du test
Nous allons exprimer chaque rsultat selon le dbit de rception par
rapport au dbit denvoi.
Analyse
On remarque que les deux outils ne ragissent vraiment pas de la mme
manire.
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.
ACTIVE MQ JORAM
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.
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 offre une couverture fonctionnelle plus large, sur peu prs
tous les plans, avec en particulier lintgration possible de
traitements et daiguillages.
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.
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.
Une prsentation complte des frameworks et VPN open source [31 pages]
composants qui permettent de rduire les temps
Cloud Computing [42 pages]
de dveloppement des applications, tout en
amliorant leur qualit. [77 pages] Middleware [91 pages]
Contactez-nous, nous serons heureux de vous prsenter nos ralisations de manire plus approfondie !
+33 1 41 40 11 00 / sdc@smile.fr