Конфигурация JMS с ActiveMQ
Я выполнил весь процесс, необходимый для хранения и пересылки сообщений. Установил activeMQ 5.5.1 и скопировал необходимые файлы JAR в WSO2eSb. Также изменил конфигурацию файла AXIS2.
<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>
ИНФОРМАЦИЯ - JMSSender JMS Sender запущен [2013-07-23 17:02:18,752] ИНФОРМАЦИЯ - JMSSender JMS Transport Sender инициализирован... после этого я создал JMS MESSAGE STORE <
messageStore name="faisal" class="org.wso2.carbon.message.store.persistence.jms.JMSMessageStore" 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">transport.jms.ConnectionFactoryJNDIName</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter>
<parameter name="store.jms.cache.connection">false</parameter>
</messageStore>
и добавить обработчик запланированной пересылки сообщений с этим
<messageProcessor name="process5" class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor" messageStore="faisal" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="interval">1000</parameter>
<parameter name="max.delivery.attempts">10</parameter>
<parameter name="message.processor.reply.sequence">Mail_Seq</parameter>
</messageProcessor>
и моя конфигурация службы прокси, как это
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Message" transports="https,http,jms" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<property name="faisal" value="faisal" scope="default" type="STRING"/>
<store messageStore="faisal"/>
<log level="full"/>
</inSequence>
<outSequence>
<log level="full"/>
</outSequence>
</target>
<description></description>
</proxy>
Хранение сообщения в хранилище сообщений, но пересылка неправильная, если конечная точка не работает, хотя сообщение обрабатывает потерянное сообщение в WSO2esb и выдает это сообщение
[2013-07-23 17:02:18,817] WARN - ForwardingJob Property target.endpoint not found in the message context , Hence removing the message
[2013-07-23 17:02:18,869] WARN - ForwardingJob Property target.endpoint not found in the message context , Hence removing the message
[2013-07-23 17:08:07,419] WARN - JMSMessageStore Consumer Receiving time out is not passed in, Setting to default value of 60 secs
2 ответа
Создайте конечную точку адреса следующим образом с правильным URI бэкэнда.
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="Service1EP">
<address uri="http://localhost:8080/services/service1"">
<suspendOnFailure>
<progressionFactor>1.0</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
<retryDelay>0</retryDelay>
</markForSuspension>
</address>
</endpoint>
Затем укажите эту конечную точку в прокси-службе, добавив следующую строку в свой inSequence.
<property name="target.endpoint" value="Service1EP" scope="default" type="STRING"/>
Это потому, что вы не определили конечную точку цели. Поэтому нет места для доставки сообщения. Поэтому сообщение будет удалено. Ваша конфигурация синапса не содержит никакой конечной точки.
Этот пост может помочь вам.
http://isharaaruna.blogspot.com/2012/09/jms-transports-in-wso2-esb-with-activemq.html