Monday, April 3, 2017

How to cluster ActiveMq with WSO2 ESB

This tutorial will illustrate how to configure Activemq(5.8.0) cluster with WSO2 ESB 5.0.0.

Download ActiveMQ


Download WSO2 ESB 5.0.0


Clustering ActiveMQ

There is no special configuration required for ActiveMQ clustering you only need to extract two ActiveMQ instances and host them in two different IP host or change the port if the ActiveMQ instances are in same IP host.

Start ActiveMQ

cd [activemq_install_directory]
bin/activemq start


Copy Jars to WSO2 ESB

If you are using ActiveMQ version 5.8.0 or later, copy following jars  to <ESB_HOME>/repository/components/lib directory.

  • activemq-broker-5.8.0.jar
  • activemq-client-5.8.0.jar
  • activemq-kahadb-store-5.8.0.jar 
  • geronimo-jms_1.1_spec-1.1.1.jar
  • geronimo-j2ee-management_1.1_spec-1.0.1.jar
  • geronimo-jta_1.0.1B_spec-1.0.1.jar
  • hawtbuf-1.9.jar
  • Slf4j-api-1.6.6.jar
  • activeio-core-3.1.4.jar (available in <AMQ_HOME>/lib/optional folder)

Enable JMS receiver for ESB

To enable the JMS transport listener, configure the following listener configuration related to ActiveMQ in <ESB_HOME>/repository/conf/axis2/axis2.xml file. Please note that we have configured the provider url as failover scenario here.

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
       <parameter name="myTopicConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">failover:(tcp://xx.xx.xx:61616,tcp://xx.xx.xy:61616)</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
       </parameter>
  
       <parameter name="myQueueConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">failover:(tcp://xx.xx.xx:61616,tcp://xx.xx.xy:61616)</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
       </parameter>
  
       <parameter name="default" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">failover:(tcp://xx.xx.xx:61616,tcp://xx.xx.xy:61616)</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
       </parameter>
</transportReceiver>


Enable JMS sender for ESB

To enable the JMS transport sender, un-comment the following configuration in <ESB_HOME>/repository/conf/axis2/axis2.xml file.

<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>



For more information on activemq clustering refer [1].


[1] http://activemq.apache.org/clustering.html

No comments:

Post a Comment