HA HornetQ-Based Messaging Subsystem - Configuration Example

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

<subsystem xmlns="urn:jboss:domain:messaging:1.4">

  <hornetq-server>
    <persistence-enabled>true</persistence-enabled>
    <cluster-password>${jboss.messaging.cluster.password:CHANGE ME!!}</cluster-password>
    <journal-type>NIO</journal-type>
    <journal-min-files>2</journal-min-files>

    <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>

    <broadcast-groups>
      <broadcast-group name="bg-group1">
        <socket-binding>messaging-group</socket-binding>
        <broadcast-period>5000</broadcast-period>
        <connector-ref>
           netty
        </connector-ref>
      </broadcast-group>
    </broadcast-groups>

    <discovery-groups>
      <discovery-group name="dg-group1">
        <socket-binding>messaging-group</socket-binding>
        <refresh-timeout>10000</refresh-timeout>
      </discovery-group>
    </discovery-groups>

    <cluster-connections>
      <cluster-connection name="my-cluster">
        <address>jms</address>
        <connector-ref>netty</connector-ref>
        <discovery-group-ref discovery-group-name="dg-group1"/>
      </cluster-connection>
    </cluster-connections>

    <security-settings>
      <security-setting match="#">
        <permission type="send" roles="guest"/>
        <permission type="consume" roles="guest"/>
        <permission type="createNonDurableQueue" roles="guest"/>
        <permission type="deleteNonDurableQueue" roles="guest"/>
      </security-setting>
    </security-settings>

    <address-settings>
      <address-setting match="#">
        <dead-letter-address>jms.queue.DLQ</dead-letter-address>
        <expiry-address>jms.queue.ExpiryQueue</expiry-address>
        <redelivery-delay>0</redelivery-delay>
        <max-size-bytes>10485760</max-size-bytes>
        <page-size-bytes>2097152</page-size-bytes>
        <address-full-policy>PAGE</address-full-policy>
        <message-counter-history-day-limit>10</message-counter-history-day-limit>
        <redistribution-delay>1000</redistribution-delay>
      </address-setting>
    </address-settings>

    <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>
        <ha>true</ha>
        <block-on-acknowledge>true</block-on-acknowledge>
        <retry-interval>1000</retry-interval>
        <retry-interval-multiplier>1.0</retry-interval-multiplier>
        <reconnect-attempts>-1</reconnect-attempts>
      </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>

    <jms-destinations>
      <jms-queue name="ExpiryQueue">
        <entry name="java:/jms/queue/ExpiryQueue"/>
      </jms-queue>
      <jms-queue name="DLQ">
        <entry name="java:/jms/queue/DLQ"/>
      </jms-queue>
    </jms-destinations>

  </hornetq-server>

</subsystem>