- Download Apache ActiveMQ.(I used ActiveMQ 5.15.12)
- Copy following jars into the <EI_HOME>/lib directory from <ActiveMQ_HOME>/lib
- activemq-broker-5.15.12.jar
- activemq-client-5.15.12.jar
- activemq-kahadb-store-5.15.12.jar
- geronimo-jms_1.1_spec-1.1.1.jar
- geronimo-j2ee-management_1.1_spec-1.0.1.jar
- geronimo-jta_1.1_spec-1.1.1.jar
- hawtbuf-1.11.jar
3. Add the following listener to the <EI_HOME>/conf/axis2.xml
<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>
4. Start ActiveMQ server with ./activemq console
command by running it on <ActiveMQ_HOME>/bin directory.
5. Start WSO2 EI with the following command.
./integrator.sh -Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*"
6. Create sequence name `failover` to store failing message. This can be a in memory message store.
7. Create message store `JMSMS` with following configs:
<messageStore name="JMSMS" class="org.apache.synapse.message.store.impl.jms.JmsStore" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
<parameter name="store.jms.destination">ordersQueue</parameter>
<parameter name="store.jms.connection.factory">QueueConnectionFactory</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.producer.guaranteed.delivery.enable">false</parameter>
<parameter name="store.failover.message.store.name">failover</parameter>
</messageStore>
8. Create proxy service test
to publish messages to the message store with following configs:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="test"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<store messageStore="JMSMS"/>
<respond/>
</inSequence>
</target>
<description/>
</proxy>
9. Create a sequence logdata
to do the processing task as follows:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="logdata" xmlns="http://ws.apache.org/ns/synapse">
<log level="full"/>
<drop/>
</sequence>
10. Create message sampling processor with the following configs:
<messageProcessor name="JMSMS" class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor" messageStore="JMSMS" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="interval">1000</parameter>
<parameter name="concurrency">1</parameter>
<parameter name="sequence">logdata</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
11. Invoke the test
proxy service with POST request and custom message body. The request body will get printed in console after message send to the message store and processor trigger the logdata
sequence.
Comments
Post a Comment