20.6. Configuration

20.6.1. Configurer le serveur JMS

Pour configurer le JMS Server d'HornetQ, modifier le fichier de configuration du serveur. La configuration du serveur se trouve dans le fichier EAP_HOME/domain/configuration/domain.xml pour les serveurs de domaine, ou dans le fichier EAP_HOME/standalone/configuration/standalone-full.xml pour les serveurs autonomes.
L'élément <subsystem xmlns="urn:jboss:domain:messaging:1.4"> du fichier de configuration du serveur contient toute la configuration JMS. Ajouter les instances ConnectionFactory, Queue, ou Topic requises pour le JNDI.
  1. Activer le sous-système JMS dans JBoss EAP 6

    Dans l'élément <extensions>, vérifier que la ligne suivante est bien présente et n'est pas dé-commentée :
    <extension module="org.jboss.as.messaging"/>
  2. Ajouter le sous-système JMS de base.

    Si le sous-système de messagerie n'est pas présent dans votre fichier de configuration, ajoutez-le.
    1. Cherchez le <profile> qui correspond à celui que vous utilisez, et chercher sa balise de <subsystems>.
    2. Ajouter le XML suivant à la suite de la balise suivante <profile>.
      <subsystem xmlns="urn:jboss:domain:messaging:1.4">
          <hornetq-server>
          <!-- ALL XML CONFIGURATION IS ADDED HERE -->
          </hornetq-server>
      </subsystem>
      Toutes les configurations supplémentaires pourront être ajoutées à la ligne vide ci-dessus.
  3. Ajouter la configuration de base à JMS.

    Ajouter l'XML suivant dans les lignes restées vides juste aprés la balise <subsystem xmlns="urn:jboss:domain:messaging:1.4"><hornetq-server> :
    <journal-min-files>2</journal-min-files>
    <journal-type>NIO</journal-type>
    <persistence-enabled>true</persistence-enabled>
    Personnaliser les valeurs ci-dessus pour qu'elles correspondent à vos besoins.

    Avertissement

    La valeur de journal-file-size doit être plus élevée ou égale à min-large-message-size (100KiB par défaut), ou bien le serveur ne pourra pas stocker le message.
  4. Ajouter les instances de fabrique de connexion à HornetQ

    Le client utilise un objet ConnectionFactory JMS pour faire des connexions au serveur. Pour ajouter un objet de fabrique de connexions JMS à HornetQ, inclure une simple balise <jms-connection-factories> et un élément <connection-factory> pour chaque fabrique de connexion comme suit :
      <jms-connection-factories>
        <connection-factory name="InVmConnectionFactory">
            <connectors>
                <connector-ref connector-name="in-vm"/>
            </connectors>
            <entries>
                <entry name="java:/ConnectionFactory"/>
            </entries>
        </connection-factory>
        <connection-factory name="RemoteConnectionFactory">
            <connectors>
                <connector-ref connector-name="netty"/>
            </connectors>
            <entries>
                <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
            </entries>
        </connection-factory>
        <pooled-connection-factory name="hornetq-ra">
            <transaction mode="xa"/>
            <connectors>
                <connector-ref connector-name="in-vm"/>
            </connectors>
            <entries>
                <entry name="java:/JmsXA"/>
            </entries>
        </pooled-connection-factory>
    </jms-connection-factories>
    
  5. Configurer les connecteurs et accepteurs netty

    La fabrique de connexion JMS utilise des connecteurs et accepteurs netty. Il s'agit de références à des objets de connecteurs ou d'accepteurs déployés dans le fichier de configuration du serveur. L'objet de connecteur détermine le transport et les paramètres utilisés pour vous connecter au serveur HornetQ. L'accepteur identifie le type de connexions acceptées par le seveur HornetQ.
    Pour configurer les connecteurs netty, inclure les paramètres suivants :
    <connectors>
        <netty-connector name="netty" socket-binding="messaging"/>
        <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
            <param key="batch-delay" value="50"/>
        </netty-connector>
        <in-vm-connector name="in-vm" server-id="0"/>
    </connectors>
    
    Pour configurer les accepteurs netty, inclure les paramètres suivants :
    <acceptors>
        <netty-acceptor name="netty" socket-binding="messaging"/>
        <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
            <param key="batch-delay" value="50"/>
            <param key="direct-deliver" value="false"/>
        </netty-acceptor>
        <in-vm-acceptor name="in-vm" server-id="0"/>
    </acceptors>
    
  6. Vérifier la configuration

    Si vous avez suivi les étapes suivantes, votre système de messagerie devra ressembler à ce qui suit :
    <subsystem xmlns="urn:jboss:domain:messaging:1.4">
        <hornetq-server>
            <journal-min-files>2</journal-min-files>
            <journal-type>NIO</journal-type>
            <persistence-enabled>true</persistence-enabled>
            <jms-connection-factories>
                <connection-factory name="InVmConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/ConnectionFactory"/>
                    </entries>
                </connection-factory>
                <connection-factory name="RemoteConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="netty"/>
                    </connectors>
                    <entries>
                        <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                    </entries>
                </connection-factory>
                <pooled-connection-factory name="hornetq-ra">
                    <transaction mode="xa"/>
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/JmsXA"/>
                    </entries>
                </pooled-connection-factory>
            </jms-connection-factories>
            <connectors>
                <netty-connector name="netty" socket-binding="messaging"/>
                <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                </netty-connector>
                <in-vm-connector name="in-vm" server-id="0"/>
            </connectors>	
            <acceptors>
                <netty-acceptor name="netty" socket-binding="messaging"/>
                <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                    <param key="direct-deliver" value="false"/>
                </netty-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0"/>
            </acceptors>
        </hornetq-server>
    </subsystem>
    
  7. Configurer les groupes de liaison de sockets

    Les connecteurs netty référencent les liaisons de socket de messaging et de messaging-throughput. La liaison de socket de messaging utilise le port 5445, et la liaison de socket messaging-throughput utilise le port 5455. La balise <socket-binding-group> se situe dans une section séparée du fichier de configuration du serveur. Veillez à ce que les liaisons de socket suivantes soient présentes dans l'élément <socket-binding-groups> :
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        ...
        <socket-binding name="messaging" port="5445"/>
        <socket-binding name="messaging-throughput" port="5455"/>
        ...
      </socket-binding-group>
    
  8. Ajouter les instances de file d'attente à HornetQ

    Il y a quatre façons de configurer les instances de files d'attente (ou destinations JMS) pour HornetQ.
    • Utiliser la console de gestion
      Pour utiliser la console de gestion, le serveur devra être démarré sous le mode Message-Enabled. Vous y parviendrez en utilisant l'option -c et en forçant l'utilisation du fichier de configuration standalone-full.xml (pour les serveurs autonomes). Ainsi, en mode autonome, ce qui suit démarrera le serveur en mode activation de message.
      ./standalone.sh -c standalone-full.xml
      Une fois que le serveur aura démarré, connectez-vous à la console de gestion, et sélectionner l'onglet Configuration. Étendre le menu Subsystems, puis le menu Messaging et cliquer sur Destinations. À côté de Default dans le tableau JMS Messaging Provider, cliquer sur View, puis cliquer sur Add pour saisir les détails de la destination JSM.
    • Utiliser l'interface CLI :
      Tout d'abord, connectez-vous à l'interface CLI :
       bin/jboss-cli.sh --connect
      Puis, passez au sous-système de messagerie :
      cd /subsystem=messaging/hornetq-server=default
      Finalement, exécuter une opération « add », en remplaçant les exemples de valeurs données ci-dessous par les vôtres :
      ./jms-queue=testQueue:add(durable=false,entries=["java:jboss/exported/jms/queue/test"])
    • Créer un fichier de configuration JMS et l'ajouter au dossier de déploiements
      Commencer à créer un fichier de configuration JMS : example-jms.xml. Ajouter y les entrées suivantes, en remplaçant les valeurs par les vôtres.
      <?xml version="1.0" encoding="UTF-8"?>				  	  <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0">
          <hornetq-server>
              <jms-destinations>
                  <jms-queue name="testQueue">
                      <entry name="queue/test"/>
                      <entry name="java:jboss/exported/jms/queue/test"/>
                  </jms-queue>
                  <jms-topic name="testTopic">
                      <entry name="topic/test"/>
                      <entry name="java:jboss/exported/jms/topic/test"/>
                  </jms-topic>
              </jms-destinations>
          </hornetq-server>
      </messaging-deployment>
      Sauvegardez ce fichier dans le dossier de déploiements et faire un déploiement.
    • Ajoutez les entrées dans le fichier de configuration de JBoss EAP 6.
      En utilisant standalone-full.xml comme exemple, cherchez le sous-système de messagerie dans ce fichier.
      <subsystem xmlns="urn:jboss:domain:messaging:1.4">
      Ajoutez y les entrées suivantes, encore une fois, en remplaçant les valeurs de l'exemple par les vôtres. Vous devez ajouter ces entrées après la balise de fin </jms-connection-factories> mais avant l'élément </hornetq-server> :
      <jms-destinations>
              <jms-queue name="testQueue">
                  <entry name="queue/test"/>
                  <entry name="java:jboss/exported/jms/queue/test"/>
              </jms-queue>
              <jms-topic name="testTopic">
                  <entry name="topic/test"/>
                  <entry name="java:jboss/exported/jms/topic/test"/>
              </jms-topic>
          </jms-destinations>
  9. Procéder à une configuration supplémentaire

    Si vous avez besoin de davantage de paramètres de configuration, revoir DTD dans EAP_HOME/docs/schema/jboss-as-messaging_1_4.xsd.