LB Smile MOM PDF
LB Smile MOM PDF
LB Smile MOM PDF
PRÉAMBULE
Smile
Smile est une société d’ingénieurs experts dans la mise en œuvre de solutions open
source et l’intégration de systèmes appuyés sur l’open source. Smile est membre de
l’APRIL, l’association pour la promotion et la défense du logiciel libre, de Alliance
Libre, PLOSS, et PLOSS RA, des associations clusters régionaux d'entreprises du
logiciel libre.
Smile compte 480 collaborateurs en France, 600 dans le monde, ce qui en fait la
première société en France spécialisée dans l’open source.
Depuis 2000, environ, Smile mène une action active de veille technologique qui lui
permet de découvrir les produits les plus prometteurs de l’open source, de les
qualifier et de les évaluer, de manière à proposer à ses clients les produits les plus
aboutis, les plus robustes et les plus pérennes.
Cette démarche a donné lieu à toute une gamme de livres blancs couvrant différents
domaines d’application. 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 publiés en 2009, citons également « Les VPN open source », et « Firewall
est Contrôle de flux open source », et « Middleware », dans le cadre de la collection «
Système et Infrastructure ».
Chacun de ces ouvrages présente une sélection des meilleures solutions open
source dans le domaine considéré, leurs qualités respectives, ainsi que des retours
d’expérience opérationnels.
Au fur et à mesure que des solutions open source solides gagnent de nouveaux
domaines, Smile sera présent pour proposer à ses clients d’en bénéficier sans risque.
Smile apparaît dans le paysage informatique français comme le prestataire
intégrateur de choix pour accompagner les plus grandes entreprises dans l’adoption
des meilleures solutions open source.
Ces dernières années, Smile a également étendu la gamme des services proposés.
Depuis 2005, un département consulting accompagne nos clients, tant dans les
phases d’avantprojet, en recherche de solutions, qu’en accompagnement de projet.
Depuis 2000, Smile dispose d’un studio graphique, devenu en 2007 Smile Digital –
agence interactive, proposant outre la création graphique, une expertise e -
marketing, éditoriale et interfaces riches. Smile dispose aussi d’une agence
spécialisée dans la TMA (support et l’exploitation des applications) et d’un centre de
formation complet, Smile Training. Enfin, Smile est implanté à Paris, Lille, Lyon,
Grenoble, Nantes, Bordeaux, Poitiers, Aix-en-Provence et Montpellier. Et présent
également en Espagne, en Suisse, au Benelux, en Ukraine et au Maroc.
Quelques références
Intranets et Extranets
Société Générale - Caisse d'Épargne - Bureau Veritas - Commissariat à l'Energie Atomique - Visual
- CIRAD - Camif - Lynxial - RATP - Sonacotra - Faceo - CNRS - AmecSpie - INRA - CTIFL - Château
de Versailles - Banque PSA Finance - Groupe Moniteur - Vega Finance - Ministère de
l’Environnement - Arjowiggins - JCDecaux - Ministère du Tourisme - DIREN PACA - SAS - CIDJ -
Institut National de l’Audiovisuel - Cogedim - Diagnostica Stago Ecureuil Gestion - Prolea - IRP-
Auto - Conseil Régional Ile de France - Verspieren - Conseil Général de la Côte d’Or - Ipsos -
Bouygues Telecom - Prisma Presse - Zodiac - SANEF - ETS Europe - Conseil Régional d’Ile de
France - AON Assurances & Courtage - IONIS - Structis (Bouygues Construction) - Degrémont Suez
- GS1-France - DxO - Conseil Régional du Centre - Beauté Prestige International - HEC - Veolia
Applications métier
Renault - Le Figaro - Sucden - Capri - Libération - Société Générale - Ministère de l’Emploi -
CNOUS - Neopost - Industries - ARC - Laboratoires Merck - Egide - ATEL-Hotels - Exclusive Hotels
- CFRT - Ministère du Tourisme - Groupe Moniteur - Verspieren - Caisse d’Epargne - AFNOR -
Souriau - MTV - Capem - Institut Mutualiste Montsouris - Dassault Systèmes - Gaz de France -
CAPRI Immobilier - Croix-Rouge Française - Groupama - Crédit Agricole - Groupe Accueil -
Eurordis - CDC Arkhineo
Applications décisionnelles
IEDOM – Yves Rocher - Bureau Veritas - Mindscape – Horus Finance – Lafarge – Optimus –
CecimObs – ETS Europe – Auchan Ukraine – CDiscount – Maison de la France – Skyrock – Institut
National de l’Audiovisuel – Pierre Audouin Consultant – Armée de l’air – Jardiland – Saint-Gobain
Recherche – Xinek – Projectif – Companeo – MeilleurMobile.com – CG72 – CoachClub
Ce livre blanc
Les Middleware Orientés Messages, ou « MOMs », sont des outils
particulièrement précieux pour mettre en œuvre des échanges entre
applications de toutes natures. Comme il arrive très souvent dans ce
qui touche aux infrastructures, les solutions open source sont
particulièrement en pointe dans ce domaine. Parce que le middleware
est souvent le ciment de toute une architecture, les critères d’ouverture,
de pérennité et d’indépendance sont essentiels dans le choix d’un tel
outil, et personne ne souhaite dépendre, dans ce contexte, de la politique
commerciale de tel ou tel acteur particulier.
Sommaire
PRÉAMBULE......................................................................................................2
SMILE.................................................................................................................................. 2
QUELQUES RÉFÉRENCES ............................................................................................................ 3
CE LIVRE BLANC...................................................................................................................... 4
SOMMAIRE............................................................................................................................. 5
CONCEPTS DES MOMS ET JMS.........................................................................7
QU'EST-CE QU’UN MIDDLEWARE ?............................................................................................... 7
Pourquoi des échanges asynchrones ?..................................................................................8
LES MIDDLEWARES ORIENTÉS MESSAGES OU MOM..........................................................................9
Définition............................................................................................................................... 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 définitions............................................................................................................ 17
Encodage du Corps des messages......................................................................................18
La structure du message JMS.............................................................................................. 20
Ordre des messages............................................................................................................ 20
Durée de vie d'un message.................................................................................................. 21
Priorité ................................................................................................................................ 22
Sélection des messages....................................................................................................... 22
Aiguillage et spécialisation................................................................................................... 23
Synthèse JMS...................................................................................................................... 24
CARACTÉRISTIQUES PRINCIPALES DES MOM....................................................................................25
Langages d'implémentation, APIs et environnements supportés..........................................25
Protocoles............................................................................................................................. 27
Traitement des messages par le MOM.................................................................................28
Gestion des transactions .................................................................................................... 29
Dead Message Queue.......................................................................................................... 32
Persistance des messages................................................................................................... 32
FONCTIONNALITÉS AVANCÉES...................................................................................................... 34
Code générique et JNDI........................................................................................................ 34
Enterprise Integration Patterns............................................................................................ 35
Interopérabilité entre MOMs................................................................................................. 36
Passerelle à base d’ESB...................................................................................................... 37
Gestion de la sécurité ......................................................................................................... 39
Administration et monitoring................................................................................................ 40
Configuration et déploiement............................................................................................... 40
Répartition de charge applicative.........................................................................................40
Topologie et réseau de brokers ........................................................................................... 41
BENCHMARK DE DÉBIT...................................................................................84
Scénario de test................................................................................................................... 84
Réalisation du test............................................................................................................... 84
Configuration....................................................................................................................... 84
La machine.......................................................................................................................... 85
Résultats 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
SYNTHÈSE.......................................................................................................90
Par exemple, les outils qui permettent à des applications d'invoquer les
services d'un SGBD sont une catégorie particulière de middlewares.
Définition
On l’a vu, les MOMs sont des middlewares, des outils d’échange 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 différent.
L’application « A » confie son message au MOM, qui se charge de
l’acheminer et de le remettre à l’application « B ».
L’objet véhiculé par le MOM entre deux applications est appelé message.
Mais rien n’est imposé quant à ce que représente ce message, sa taille, ou
encore le format des données qu’il véhicule. Pour l’essentiel, ces
questions ne concernent que l’application « A » et l’application « B », qui
doivent partager un certain nombre de conventions, afin de se
comprendre.
L’ESB, Enterprise Service Bus, est un concept plus ambitieux encore, qui
se présente comme le socle uniforme d’une architecture SOA globale. Là
où l’EAI peut prendre en charge des transformations de formats
permettant à une application A d’interopérer avec une application B,
l’ESB généralise le concept, en posant pour principe qu’il suffit qu’une
application A soit interfacée à l’ESB pour qu’elle puisse interopérer par
son intermédiaire avec toute autre application interfacée à l’ESB. Et par
ailleurs, la connexion à l’ESB n’est pas exclusivement à base de
messages, elle doit supporter une grande diversité de modes d’échange et
de protocoles.
L'approche EDA part de l'idée que tout traitement est d'une certaine
manière exécuté en réaction à un événement. Et bien sûr, tout
traitement est par ailleurs générateur d'événements. Ainsi, la vente d'un
produit est un événement, qui induit un ensemble de traitements relatifs
par exemple à la gestion des stocks, à la comptabilité, à la logistique, à la
relation client, etc. Tout est événement, tout est réaction à des
événements, et il en va de même pour nous-mêmes, êtres humains, qui
agissons en réaction à un ensemble de stimuli externes.
elle est par essence asynchrone. Alors que l'approche SOA, même si elle
peut se décliner dans une logique asynchrone, est malgré tout par
essence une approche synchrone. Et bien sûr, 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 paramètres et la configuration du MOM.
Les échanges à base de MOM ne sont pas, par nature, en mode requête /
réponse, comme peut l’être un échange HTTP par exemple. Il est
possible bien sûr que l’application destinatrice émette à son tour un
message, que l’on peut considérer comme une réponse, mais il s’agit
alors seulement d’une utilisation particulière du MOM.
Brokers
Les brokers sont des programmes gérant 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 l’API.
Protocoles et APIs
Lorsqu’une application échange avec un broker, par exemple pour lui
remettre un message, et de même lorsqu’un broker échange avec un
autre broker, ces échanges mettent en œuvre un protocole réseau. Le
protocole définit les commandes invoquées et leurs paramètres, ainsi que
la représentation des données, entêtes et corps, constituant les
messages.
C'est une des raisons pour lesquelles les solutions open source sont
naturellement à privilégier 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 priorités, 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. C’est
l’API qui permet à une application d’invoquer les services d’un MOM.
Comme toute spécification, JMS doit assurer que toutes les applications
qui s’y conforment ont le même comportement quel que soit le
fournisseur de l’implémentation. La JMS laisse aussi dans des cas bien
définis, la liberté aux fournisseurs d'implémenter ou non certaines
fonctionnalités. Nous reviendrons en détail sur ces fonctionnalités qui
distinguent les différents MOMs.
Comme JDBC pour l’accès aux bases de données, ou JCR pour l’accès à
un référentiel de contenus, JMS permet en théorie de développer une
application interfacée à un MOM, sans dépendre d’un produit particulier.
C'est-à-dire qu’il devrait être possible de remplacer un MOM JMS par un
autre de manière transparente pour l’application. Comme pour les
accès aux bases de données, cet aspect interchangeable n’est pas
toujours vérifié en pratique. Il peut exister des petites différences
d’implémentation de la spécification, et par ailleurs les différents outils
MOMs s’efforcent d’offrir des petits « plus », des fonctionnalités
différenciantes.
Modes de communication
La spécification JMS introduit deux modes de communication, les
« domaines JMS »: les topics d'une part, les queues d'autre part..
C’est 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 différences d’usage de ces deux modes. Dans le mode
queue, on peut imaginer qu’un message représente une unité de
traitement. L’application destinatrice reçoit le message et effectue un
traitement à partir du message, et dans ce cas il faut que le traitement ne
soit pas exécuté deux fois. Dans le mode topic, on peut voir le message
plutôt comme une unité d’information, qui peut intéresser différents
acteurs, différentes applications. Par exemple, un ordre de bourse sera
une unité de traitement, tandis qu’un cours de bourse sera une
information.
Quelques définitions
JMS introduit différents 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 l’API JMS.
Non-JMS Client
JMS Provider
JMS Consumer
JMS Producer
Un Producteur JMS est une application qui crée et envoie des messages
JMS. Une même 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 :
« 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 d’annuler des opérations qui
n’ont pas encore été validées, commitées, en ordonnant un retour arrière,
un rollback. Voir « Gestion des transactions », page 29.
À noter que si l'on est dans le contexte d'une transaction, la durée de vie
démarre quand même à l'instant d'émission, et non à l’instant du commit.
Priorité
Une fonctionnalité optionnelle, mais utile, proposée par le JMS, est la
gestion des priorités, c'est-à-dire que la délivrance des messages
s’effectue selon leur priorité.
La sélection des messages est définie dans JMS 1.1, elle est donc offerte
par tous les MOMs étudiés. La syntaxe est inspirée du SQL, elle peut
faire intervenir différents opérateurs de comparaison, d'expressions
logiques, et même des opérations arithmétiques.
Aiguillage et spécialisation
On peut donc mettre en œuvre, au moyen de la sélection, une
spécialisation des consommateurs. En fait, dans une logique
d'affectation et de répartition de tâches, on peut distinguer trois
techniques:
Synthèse JMS
JMS est une API, et cette API correspond à des services d'échange entre
des producteurs et des consommateurs de messages, s’appuyant sur des
concepts que nous avons présentés. Au-delà de l’API donc, JMS définit
les fonctionnalités centrales des MOMs.
JMS spécifie le service, mais ne spécifie pas comment ce service est mis
en œuvre. Chaque fournisseur, JMS Provider, est libre de ses choix
d’implémentation.
Cela dit, le langage dans lequel le MOM lui-même est codé pourrait être
d’une importance secondaire. De même qu’il importe peu de savoir dans
quel langage MySql est codé, du moment que nous pouvons en invoquer
les fonctionnalités depuis divers environnements. Ce qui importe pour
les applications, c’est la disponibilité d’APIs, de fonctions ou méthodes
qui peuvent être appelées pour invoquer les services du MOM.
Lorsque le MOM offre des APIs pour d’autres environnements que Java,
elles se présentent sous la forme de librairies de fonctions dans
l’environnement cible, par exemple en C ou en PHP.
Rappelons que, par définition, JMS est une API pour l'environnement
Java. Dans les exemples précédents, les applications sont donc
nécessairement Java.
Des APIs peuvent être fournies pour d’autres environnements que JEE,
par exemple C++, PHP, .Net, Ruby, Perl. Plus la liste de langages grâce
auxquels on peut accéder au MOM est grande, meilleures sont les
possibilités d'intégration.
Protocoles
Lorsqu’une application appelle une API pour invoquer le MOM, la
fonction d’API prend en charge l’échange avec un broker du MOM.
Pourtant, l'un des MOMs que nous étudierons, ActiveMQ, offre cette
possibilité supplémentaire, de définir des traitements à exécuter sur les
messages qui lui sont confiés. Ces traitements sont définis en référence
aux différents Enterprise Integration Patterns, un recensement des
familles de traitements (cf « Enterprise Integration Patterns », page 35.
La question importante est: Est-ce une bonne idée d'insérer ces règles et
ces traitements dans le MOM ? Ne sont-ils pas plutôt du ressort de
l'application ? Le MOM ne devrait-il pas plutôt rester dans son rôle 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 délivrance
ordonnée pour les MOMs en général.
Transactions JMS
Transactions XA
Sur cet exemple très simple, on voit donc que les transactions XA
peuvent être absolument indispensables dans certains contextes afin
d'assurer une réelle garantie de cohérence au niveau global du système
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 manière sécurisée, de manière persistante.
Lorsque l’on doit mettre en œuvre une gestion des transactions, qui
implique une utilisation plus importante de la mémoire. Les
messages utilisant les transactions ne sont supprimés que
lorsque les transactions sont validées.
Fonctionnalités avancées
De même que JDBC est une interface permettant d’accéder à une base
de données, de même JNDI ou « Java Naming and Directory Interface » est
l’interface qui permet l’accès à des services de nommage et de répertoire
de façon standard. L’utilisation la plus commune de l’interface JNDI
concerne l’accès à un annuaire LDAP. Mais au-delà de la fonctionnalité
usuelle de gestion d’une base de personnes, d’utilisateurs, on peut
utiliser l’API JNDI simplement pour accéder à des objets désignés par des
noms. Ainsi, dans le contexte des MOMs, JNDI sert à stocker des objets
génériques du MOM, afin de transmettre leur implémentation spécifique
de JMS au programme.
Voici la liste des catégories référencées 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 tâche n’est pas d’une grande complexité, mais elle peut être
fastidieuse, et donc coûteuse, puisqu’il faut relier des domaines entre
eux un par un, sans en oublier aucun. Et bien sûr, cette configuration
devra être l’objet d’une maintenance, en fonction des variations de
configuration intervenant de part et d’autre.
Gestion de la sécurité
Étant donné le rôle souvent central d’un MOM dans un système
d’information, les questions de sécurité sont évidemment cruciales. Si
n’importe quelle application peut se connecter au MOM et se mettre en
lecture sur une queue, on voit qu’il sera facile de pirater le système et
d’accéder à des données critiques, ou d’injecter des messages.
Les MOMs que nous étudions offrent la possibilité de spécifier les règles
d’authentification et d’habilitations au moyen d’un provider de sécurité,
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 spécifique.
Administration et monitoring
Les MOMs offrent différentes possibilités d’administration et de
monitoring :
API spécifique
Configuration et déploiement
Les MOMs peuvent fournir plusieurs modes de configuration : fichiers de
configuration, messages adressés aux brokers, à travers différentes
syntaxes (Ini, Spring, DSL, …), plus ou moins compliquées. On remarque
une tendance à intégrer le MOM au sein d'environnements comme
Spring. L’intérêt d’intégrer la configuration à Spring est par exemple la
possibilité de lancer un broker à partir d’un outil le supportant. Ci-après
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 étudiés sont tous réalisés en Java. Ils sont tous utilisables
sur les plateformes supportant le Java 5 (Linux, Windows, Mac OS,
Solaris, HP UX, AIX …).
pas spécifiées, mais le plus souvent il s'agit d'un simple round robin,
c'est-à-dire une attribution cyclique, « à tour de rôle ».
Recevoir un message
Effectuer le traitement
Acquitter le message.
Rappelons que la disponibilité du MOM n’est pas juste une bonne chose,
elle est absolument fondamentale pour les applications. Lorsqu’un
utilisateur veut se connecter au site web de sa banque, on préfère bien
sûr que ce site soit disponible. S’il ne l’est pas, l’utilisateur est
mécontent, mais il peut ré-essayer un peu plus tard.
Les techniques mises en œuvre sont en fait les mêmes que pour
n’importe quel serveur d’application : redondance du serveur et partage
des données.
Réplication maître-esclave
Partage du stockage
Auto-découverte
Ces clusters de brokers sont configurables et peuvent profiter des
fonctionnalités d'auto-découverte. Par exemple, lors de la mise en ligne
d'un broker supplémentaire (configuré correctement), les brokers en
cours d'exécution le reconnaitront tout de suite comme faisant partie de
la plateforme.
Active MQ
JORAM
JBoss Messaging
JORAM
Présentation
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 intégré JORAM.
JORAM est sortie en 1999 et est distribué sous licence LGPL depuis
Mai 2000.
Implémentation
Architecture de JORAM
La persistance peut être gérée sur le système de fichier, dans une base
java embarquée (Derby, voir plus loin pour plus de détail), ou sur une
base de données relationnelle externe via JDBC.
Nous n’avons pas trouvé, dans les documentations fournies par JORAM,
d’information 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 utilisée à des fins
de démonstration.
Configuration et déploiement
Une vingtaine d'exemples est fournie. Un système basé sur ANT rend
l'utilisation de ces exemples particulièrement simple. On regrette
l’absence d’une documentation digne de ce nom concernant le C / C++
et la persistance.
Détail
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 antérieures.
Qualité
Références
Active MQ
Présentation
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'implémentation
Messagerie
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
</otherwise>
</choice>
</route>
</camelContext>
Dans cet exemple, chaque domaine aura une DMQ attribuée de manière
individuelle.
de données seule. Il affiche aussi une meilleure fiabilité, car il a été bâti
pour le transactionnel.
</networkConnectors>
[...]
Il est possible d'encapsuler les connexions dans du SSL entre les clients
et un broker pour sécuriser les échanges. Le SSL se comporte donc
comme un connecteur à part entière.
Administration
Le monitoring et l'administration de la plateforme sont proposés :
…
Configuration et déploiement
Active MQ peut être installé sur n'importe quelle plateforme supportant
au minimum Java 5.
Détail
Qualité
Références
Présentation
OMQ est le Middleware Orienté Message de Sun. Il a été développé pour
fonctionner conjointement avec GlassFish (Open ESB).
Langages d'implémentation
Messagerie
JAAS
Paterns Résultats
Pour finir avec la gestion des messages, OMQ gère la validation des
contenus XML : « XML Schema Validation ».
Sun ne fournit aucun bridge JMS ou autre. Il est ainsi à notre charge
d’en créer ou d'en adapter un (open source) à nos besoins.
OMQ gère les groupes d'utilisateurs. On peut personnaliser les accès aux
éléments 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 déploiement
OMQ est réalisé en Java. Voici la liste des systèmes 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 d’utiliser les scripts fournis que de
remplir les fichiers de configuration, ce qui est bien dommage.
Détails
Qualité du projet
Sur le bug tracker, il existe encore des bugs ouverts depuis près d'un an,
et de même certaines questions sur le forum n'ont pas trouvé de réponse
depuis plusieurs mois.
Références
Présentation
JBoss a donné naissance à JBoss
Messaging (JBM) devenu ensuite
JBoss Queue (JBQ), actuellement en
sa version 1.4.0 SP3.
JBM a été réalisé, comme son nom l'indique, par la communauté JBoss
et RedHat, leader mondial dans le domaine de l'open source.
Langages d'implémentation
Récupéré à partir du site Internet de JBM, le code source est assez bien
organisé. Un système de compilation automatique du type MAVEN est
présent.
Des quatre MOMs de notre sélection, il est celui qui présente le moins de
connectivité.
Des quatre MOMs comparés ici, il est aussi le plus pauvre dans cette
catégorie.
Messagerie
Par défaut, c’est Hypersonic qui est choisi. Une note de JBoss fait
remarquer que Hypersonic ne devrait pas être utilisé en production à
cause :
Selon les spécifications de JBoss, la sécurité est gérée par JBM à l'aide
de fichiers de configuration. Par ailleurs, elle peut être personnalisée par
JAAS.
Administration
Configuration et déploiement
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 intégrant JBM possèdent quant à eux un support
commercial via email uniquement.
Références
Le site internet de JBoss présente les entreprises qui ont adoptées leurs
produits, qui incluent Enernoc, Scania, Iwbank, Covad, AcXium.
Autres
La version 2.0 de JBM est en préparation dans les « bunker top secret »
de la communauté JBoss. Cette version apportera des nouveautés par
lesquelles:
AMQP / STOMP
…
COMPARATIF
JORAM AMQ OMQ JMQ
BENCHMARK DE DÉBIT
Scénario de test
Ce test de performance a pour but de mettre en exergue les limites des
MOMs selon la charge infligée. Pour ce faire, nous allons mettre en place
un MOM et lui envoyer des messages à débit constant et pendant une
période de 10 secondes. Nous allons mesurer pour chaque message le
temps écoulé de l'envoi, jusqu'à sa réception.
Réalisation du test
Après la mise en place d'un MOM, nous lançons les programmes
« producteur » et « consommateur ».
Configuration
La configuration des deux outils est issue de celle par défaut. Elle est
épurée de tout ce qui n'est pas nécessaire. Le mode de transport est le
TCP. Aucun chiffrement particulier n'a été mis en place et aucune limite
de mémoire au niveau de la configuration non plus. Au niveau de la
JVM, 7 Go lui ont été alloués pour chaque broker, consommateur et
producteur.
La machine
Les producteurs, le consommateur et le broker tournent sur des
machines EC2 distinctes, allouées sur le cloud Amazon, du type :
7.5 Go de R.A.M
Résultats du test
Nous allons exprimer chaque résultat selon le débit de réception par
rapport au débit d’envoi.
Analyse
On remarque que les deux outils ne réagissent vraiment pas de la même
manière.
D’autre part, JORAM n’est pas aussi sensible que Active MQ à la taille
des messages. On remarque que la différence entre les débits de
réception des messages de différentes tailles est plus grande dans le cas
d’Active MQ que celle de JORAM.
Une chose est sûre, Active MQ est bien plus performant que JORAM, à
petite ou forte charge. Voici un tableau récapitulatif des débits de
réception.
ACTIVE MQ JORAM
SYNTHÈSE
La première question n’est pas quelle solution de MOM choisir.
L’important est d’abord de bien identifier les bénéfices importants qu’un
MOM peut apporter dans un système d’information, et c’est pourquoi
nous nous sommes attachés en premier lieu de bien décrire les services
rendus par un MOM, et la manière 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 d’échanges rudimentaires,
voir archaïques. Les MOMs apportent une solution ouverte, flexible et
extensible à une diversité de problèmes d’intégration. On peut déployer
un MOM dans un contexte hautement hétérogène, mais il a toute sa
place également au sein d’une simple plateforme web, un peu haut de
gamme.
Une fois que l’architecte est convaincu qu’un middleware de type MOM
est le bon socle d’échange pour sa plateforme, il lui reste à faire le choix
d’un produit. L’offre est riche, et comme on l’a vu, tous les produits
convergent autour de la spécification JMS, ce qui offre un niveau de
service de base commun, mais aussi permet de concentrer l’expertise.
Mais sur le sujet des MOMs, force est de constater qu’un produit sort du
lot : notre étude nous amène à conclure que Apache Active MQ est la
meilleure des quatre solutions étudiées :
Elle offre une couverture fonctionnelle plus large, sur à peu près
tous les plans, avec en particulier l’intégration possible de
traitements et d’aiguillages.
Pour nous, l’affaire est entendue, Active MQ nous semble être le meilleur
choix. Sauf bien sûr si l’on a par ailleurs déjà déployé une infrastructure
basée sur les autres lignes de produits : Redhat/JBoss, SUN/GlassFish,
ou OW2/Jonas.
Active MQ, avec l’intégration de Apache Camel, prend des aspects d’EAI,
et peut prendre en charge des transformations de messages et
conversions de formats, mais de manière encore relativement limitée.
Une présentation complète des frameworks et VPN open source [31 pages]
composants qui permettent de réduire les temps
Cloud Computing [42 pages]
de développement des applications, tout en
améliorant leur qualité. [77 pages] Middleware [91 pages]
Contactez-nous, nous serons heureux de vous présenter nos réalisations de manière plus approfondie !
+33 1 41 40 11 00 / [email protected]