Pour savoir où on va, il faut savoir d'où l'on vient

Vous avez
une question ?
Un projet ?

Contactez nous !
 

Contactez-nous

Vous avez une question ? un projet ? 
Vous souhaitez plus d'informations sur un produit ? sur notre offre ? 
Contactez-nous, on vous répond sous 4H.

retour

MOM Open Message Queue (OMQ)

MOM Open Message Queue (OMQ)

Présentation

 

Caractéristiques principales du prduit

Langages d'implémentation

Les sources, récupérables du site Internet de la solution sont mal organisées. D'une part, on constate la présence de binaires, de fichiers C et autres. De plus, il n'y a pas de système de compilation automatique du type MAVEN ou ANT.

Sun fournit néanmoins une documentation indiquant comment compiler la solution (via NetBeans).

On remarque la présence de répertoires (à la racine de src) nommés Solaris et Win32 (Windows), référent à des bouts de code spécifique. Qui a dit que Java était multiplateformes ?

Dans cet amas de fichiers, on retrouve même le code de l'interface d'installation.

En ce qui concerne le code java en lui même, 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 gère pas le JMS 1.0.2)
  • C : l'API est propriétaire Java, sa spécification est documentée par Sun à l'adresse suivante :
    http://www.docs.sun.com/app/docs/doc/819-7756

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

    Les protocoles externes pris en charge sont les suivants :

    • UMS comme Universal Messaging System : C'est un protocole de communication comparable à AMQ P . Sun ne le met guère en avant, étant données ses limitations en termes fonctionnalités et de performance. UMS est basé sur du XML, ce qui alourdit un peu les échanges. Sun fournit sa spécification à l'adresse suivante : HTTPS://mq.dev.java.net/4.3-content/ums/umsIntro.html

    A l’aide de passerelles, OMQ gère 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 d’OMQ n’est pas documenté.

    Selon les classes d'interface :

    • Messagerie
    • JCA 1.5 sous Java
    • JMS 1.1 sous Java
    • API C : Elle est propriétaire à Java , sa spécification est documentée 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 gère pas la priorité des messages.

OMQ gère la compression et la décompression des messages à la volée. Un exemple :

 

Une des nouvelles fonctionnalités originales est la gestion des « WildCard Topics ». En autorisant l'utilisation d'une syntaxe particulière, 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

 

Pour finir avec la gestion des messages, OMQ gère 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 spécifiée.

Persistance des messages

Il est possible de réaliser de la persistance sur le système de fichier. La persistance est aussi disponible dans des bases de données telles que : Oracle, MySQL, PostgresSQL, Java DB (Derby), toutes accédées via JDBC.

Répartition de charge et haute disponibilité multi-site

Deux modes sont disponibles :

  • Cluster Normal : Ce mode n’oblige pas la persistance. Il permet la répartition manuelle de la charge sur plusieurs brokers. La disponibilité de la plateforme se trouve aussi améliorée. Cependant, si un ou plusieurs brokers venaient à mourir, leurs messages seraient perdus
  • High-availability (Haute disponibilité) : En introduisant de la persistance, OMQ améliore encore la fiabilité de la plateforme. Même si tous les brokers meurent au même moment, aucun message ne sera perdu (les messages ayant été pris en compte). Cette solution amène de moindres performances.
  • OMQ ne gère pas de réplication Master/Slave.

    Il n’y a pas de système de découverte automatique de broker.

    OMQ se montre ainsi limité concernant les problématiques d'entreprise.

    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 support SSL / TLS comme mode d'encryptions des messages.Celui-cii peut se placer aussi bien entres applications et brokers qu’inter-brokers.

    Les applications clientes (consommatrices ou productrices) peuvent se connecter grâce à un couple (nom d'utilisateur, mot de passe). Les mots de passe sont encodés à l'aide de l'algorithme MD5.

    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.

    Les supports de stockage des éléments de sécurité sont:

    • Fichier de configurations sous format XML
    • LDAP

    Les propriétés suivantes contrôlent le comportement d’OMQ vis-à-vis du LDAP

     

    La gestion de l'authentification et de l'autorisation peut être personnalisée à l'aide de l'API JAAS.

Administration

OMQ fournit aussi des outils d'administration en ligne de commande permettant, à l’aide de scripts (shell ou autres), d’automatiser certaines tâches. A titre d’exemple, « imqadmin » et « imqcmd » permettent de gérer un parc de brokers, de recharger une nouvelle configuration, … Ces outils se montrent ainsi particulièrement utiles.

Un monitoring du middleware est possible par messages. Il suit les mêmes concepts que les « Advisory Messages » d’Active MQ.

La plateforme OMQ implémente JMX.

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
  • 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 téléchargement du paquet du site de Sun, on remarque la présence 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 présence 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 d’OMQ. Dommage qu’aucun exemple ne montre la mise en place d'une plateforme en cluster ou high-availability (haute disponibilité).

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 grâce à des fichiers non –XML dont voici un exemple :

 

Cette ligne informe OMQ de la liste des brokers disponibles.

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étail du projet

Détails

La version d’OMQ étudié est la 4.3. On remarque une assez conséquente liste de bugs dont certains sont particulièrement gênants :

  • Impossibilité de parcourir une queue qui est gérée par un autre broker (Browse).
  • La persistance avec HADB est limitée en nombre de messages (10 000) et en taille (10 Mo).

HTTP://docs.sun.com/app/docs/doc/820-6360/aembi?a=viewla liste complète des bugs est à cette adresse :

Il est possible d’obtenir une version commerciale. Cependant, aucun détail n’est fourni.

Qualité du projet

Sun fournit un Wiki contenant des exemples de code. La communauté dispose d’un Forum, une mailing-list ainsi qu'un système 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 défauts suggèrent que le projet n’est pas très actif, ou en déperdition.

Toutefois, si l’on s’intéresse à la réactivité des contributeurs, on constante un délai moyen de réponse de l'ordre de l'heure, ce qui est fort appréciable.

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.

HTTP://mq.dev.java.netSelon Google, le site officiel est constitué de 62 pages et obtient un page rank de 6.

Références

Aucune information n'est donnée sur les clients ou utilisateurs d’OMQ.