Table of Contents | ||
---|---|---|
|
...
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.
- Download and set up up Apache ActiveMQ. For instructions, see Installation Prerequisites.
- Copy the following client libraries from the
<AMQ_HOME>/lib
directory to the<
EIESB_HOME>/repository/components/lib
directory.
ActiveMQ 5.8.0 and aboveactivemq-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
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 language powershell queue.ClientReq = ClientReq queue.BEReq = BEReq queue.BERes = BERes
Uncomment the following sections in the
<ESB_HOME>/repository/conf/axis2/axis2.xml
file.To enable the JMS transport sender:
Code Block language xml <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
To enable the JMS transport listener:
Code Block language xml <!--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.
...
- The JMSReplyTo property of the JMS message is set to ClientRes. Therefore, the client sends a JMS message to the ClientReq queue.
- 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.
- The back-end picks messages from the BEReq queue, processes and places response messages to BERes queue.
- Once a response is available in BERes queue, the proxy service picks it and sends back to ClientRes queue.
- The client picks it as the response message.