Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3

...

The following diagram depicts quad-channel JMS synchronous invocations of the WSO2 Enterprise Integrator (WSO2 EI)ESB.

   

Prerequisites

Follow the steps below to set the prerequisites up before you start.

  1. Download and set up up Apache ActiveMQ. For instructions, see Installation Prerequisites. 
  2. Copy the following client libraries from the <AMQ_HOME>/lib directory to the <EIESB_HOME>/repository/components/lib directory.   
    ActiveMQ 5.8.0 and above   
      • activemq-broker-5.8.0.jar
      • activemq-client-5.8.0.jar
      • geronimo-jms_1.1_spec-1.1.1.jar
      • geronimo-j2ee-management_1.1_spec-1.0.1.jar
      • hawtbuf-1.9.jar   

              Earlier version versions of ActiveMQ

      • activemq-core-5.5.1.jar
      • geronimo-j2ee-management_1.0_spec-1.0.jar
      • geronimo-jms_1.1_spec-1.1.1.jar
  3. Add the following properties to the <ESB_HOME>/repository/conf/jndi.properties file. For more information, see Setting up WSO2 ESB and ActiveMQ.

    Code Block
    languagepowershell
    queue.ClientReq = ClientReq
    queue.BEReq = BEReq
    queue.BERes = BERes
  4. Uncomment the following sections in the <ESB_HOME>/repository/conf/axis2/axis2.xml file.

    1. To enable the JMS transport sender:

      Code Block
      languagexml
      <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
    2. To enable the JMS transport listener:

      Code Block
      languagexml
      <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)--><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">tcp://localhost: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">tcp://localhost: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">tcp://localhost:61616</parameter>
                 <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
                  <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
             </parameter>
         </transportReceiver>

Sample configuration

Following is a sample configuration of WSO2 EI ESB for quad-channel JMS synchronous invocations.

...

  1. The JMSReplyTo property of the JMS message is set to ClientRes. Therefore, the client sends a JMS message to the ClientReq queue.
  2. The transport.jms.ReplyDestination value is set to BERes. This enables the WSO2 EI ESB proxy to pick messages from ClientReq queue, and send to BEReq queue.
  3. The back-end picks messages from the BEReq queue, processes and places response messages to BERes queue.
  4. Once a response is available in BERes queue, the proxy service picks it and sends back to ClientRes queue.
  5. The client picks it as the response message.