ESB as Both a JMS Producer and Consumer
This section describes how to configure WSO2 ESB to work as a JMS-to-JMS proxy service.
Follow the steps below to configure WSO2 ESB to listen to a JMS queue and consume messages and then send those messages to another JMS queue.
- Configure WSO2 ESB with Apache ActiveMQ and set up the JMS listener and sender. For instructions, see Configure with ActiveMQ.
Create a proxy service with the following configuration.To create a proxy service using ESB Tooling, see Working with Proxy Services via ESB Tooling.
<proxy name="StockQuoteProxy" transports="jms"> <target> <inSequence> <property action="set" name="OUT_ONLY" value="true"/> <send> <endpoint> <address uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory& java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616"/> </endpoint> </send> </inSequence> </target> </proxy>
When entering the above URLs in the management console, replace '
&
' character in the endpoint URL with '&
'In the sample configuration above, ESB listens to a JMS queue named
StockQuoteProxy
and sends messages to another queue namedSimpleStockQuoteService.
- To place a message into a JMS queue, execute following command from
<ESB_HOME>/samples/axis2Client
directory.
ant stockquote -Dmode=placeorder -Dtrpurl="jms:/StockQuoteProxy?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.ContentTypeProperty=Content-Type&transport.jms.DestinationType=queue"
You can view the ActiveMQ queues by accessing the ActiveMQ management console using the URLÂ
http://0.0.0.0:8161/admin
and using admin
 as both the username and password.
Generally, JMS is used for one-way, asynchronous message exchange. However you can perform synchronous messaging also with JMS. For more information, see JMS Synchronous Invocations : Dual Channel HTTP-to-JMS and JMS Synchronous Invocations : Quad Channel JMS-to-JMS.