我们如何使用JMS消息存储处理存储和转发

时间:2013-07-25 06:34:30

标签: wso2 wso2esb

我已完成axis2文件中的所有更改并将jar文件放入lib中 我的消息进程工作正常并存储 什么时候我发送请求代理存储中介和定义target.endpoint也请求消息存储在消息存储后它不处理 我的配置文件

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Message" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <property name="faisal" value="faisal" scope="default" type="STRING"/>
         <property name="target.endpoint" value="JmsChecking" scope="default" type="STRING"/>
         <store messageStore="faisal5"/>
      </inSequence>
      <outSequence>
         <log level="full"/>
      </outSequence>
   </target>
   <description></description>
</proxy

和消息存储是

<messageStore name="faisal5" 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">faisal5_Queue</parameter>
   <parameter name="store.jms.JMSSpecVersion">1.1</parameter>
   <parameter name="store.jms.cache.connection">false</parameter>
</messageStore>

和消息处理器

<messageProcessor name="faisal" class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor" messageStore="faisal5" xmlns="http://ws.apache.org/ns/synapse">
   <parameter name="interval">1000</parameter>
   <parameter name="max.delivery.attempts">4</parameter>
</messageProcessor>

和端点定义哪个是这样的 及其条目

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="JmsChecking">
   <address uri="http://localhost:8282/services/JmscheckingEndpoint" format="soap11">
      <suspendOnFailure>
         <progressionFactor>1.0</progressionFactor>
      </suspendOnFailure>
      <markForSuspension>
         <retriesBeforeSuspension>0</retriesBeforeSuspension>
         <retryDelay>0</retryDelay>
      </markForSuspension>
   </address>
</endpoint>

终点包含日志值代理

proxy xmlns="http://ws.apache.org/ns/synapse" name="JmscheckingEndpoint" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <log level="custom">
            <property name="Message" value="JMs working fine"/>
            <property name="value" expression="//mail/text()"/>
         </log>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </target>
   <description></description>
</proxy>

现在我发送了我的请求 此日志值正如此打印

[2013-07-25 11:42:03,039]  INFO - LogMediator Message = JMs working fine, value = faisal.shaik@youtility.in
[2013-07-25 11:42:03,039]  INFO - LogMediator Message = JMs working fine, value = faisal.shaik@youtility.in
[2013-07-25 11:42:03,039]  INFO - LogMediator Message = JMs working fine, value = faisal.shaik@youtility.in
[2013-07-25 11:42:03,039]  INFO - LogMediator Message = JMs working fine, value = faisal.shaik@youtility.in

以及消息进程正在停用。如果我再发送一个请求,它只是存储其未处理消息进程的bcoz是停用状态 这个JMS工作只是这样 我的情况是,如果端点可用,我将获得请求消息将传递和删除如果端点不可用消息将重试最大提及时间甚至还有端点不可用然后它将存储在消息存储中 你能解释一下这个参数的用途是什么吗? 我按照这个链接http://docs.wso2.org/wiki/display/ESB460/Store+and+Forward+Using+JMS+Message+Stores 我在哪里可以找到这个faisal5_Queue存储点它是否存在为文件夹

   <parameter name="store.jms.destination">faisal5_Queue</parameter>

1 个答案:

答案 0 :(得分:1)

不,它不会创建文件夹。当你提到“store.jms.destination”使用时 faisal5_Queue wso2 esb将在您的消息代理(在您的情况下为ActiveMQ)中创建一个具有指定名称“faisal5_Queue”的队列。如果您没有明确提及,WSO2 esb将创建一个包含“YourMessageStoreName_Queue”的队列

您可以在这些博客上进一步参考,以了解“消息存储”和“消息处理器”的行为

http://vanjikumaran.blogspot.com/2013/08/jms-store-and-jms-processor-behavior.html http://vanjikumaran.blogspot.com/2013/08/jms-messagenstore-and-jms-message.html http://vanjikumaran.blogspot.com/2013/08/jms-messagen-store-and-jms-message.html