JBoss/HornetQ

EN COURS DE REDACTION

HornetQ est le 3° moteur JMS de JBoss. Jusqu'à JBoss AS 4, on avait eu JBossMQ qui était de qualité médiocre. A partir de JBoss AS 4.2, il est possible de remplacer JBossMQ par JBoss Messaging. Celui-ci est fourni en standard avec JBoss AS 5.x. A partir de JBoss AS 6, c'est HornetQ qui est installé. Ce dernier est une vrai révolution par rapport à ses prédécesseurs ; il surclasse tous ses concurrents en performances.

Le sujet de cet article est de montrer comment utiliser HornetQ dans les versions 4 et 5 de JBoss AS.

Installer HornetQ

Il faut commencer par télécharger la version de JBoss AS que vous souhaitez utiliser : 4.2.3 ou 5.1.0. La procédure marchera aussi avec des versions plus anciennes, mais celles-ci sont de moindre qualité. On décompresse l'archive téléchargée ; pour ma part, je mets le répertoire décompressé dans /opt/java/

Ensuite, on télécharge HornetQ. A l'heure où j'écris l'article, j'utilise la version 2.1.2. Je décompresse aussi l'archive dans /opt/java/.

Ensuite, il faut renseigner la variable d'environnement JBOSS_HOME et exécuter le script de build placé dans le répertoire d'HornetQ correspondant à la version de JBoss AS utilisée.

 export JBOSS_HOME=/opt/java/jboss-5.1.0.GA
 cd /opt/java/hornetq-2.1.2.Final/config/jboss-as-5
 sh build.sh

Le script m'aura créé deux nouveaux profils dans JBoss : all-with-hornetq et default-with-hornetq. Le premier changement visible dans ces nouveaux profils est le remplacement du répertoire messaging par un répertoire hornetq.sar.

Configurer HornetQ

Destinations

La première tâche de configuration est de créer nos Queues et Topics. Cette tâche se fait dans le fichier deploy/hornetq.sar/hornetq-jms.xml.

  <queue name="MyQ">
     <entry name="/queue/MyQueue"/>
  </queue>
  
  <topic name="MyT">
     <entry name="/queue/MyTopic"/>
  </topic>

On apprécie ici la sobriété de la syntaxe qui tranche avec les versions précédentes. Par contre, on peut regretter de ne pas pouvoir déployer dans un fichier séparé, ce qui était très pratique pour l'automatisation du déploiement.

ConnectionFactory

Sécurité

Cluster

Connecteur

Netty,... -Dhornetq.remoting.netty.port -Dhornetq.remoting.netty.batch.port -Dhornetq.server-id

Binding de port ?