2016-06-10 60 views
0

我已经创建了如下的JMS侦听器。一切都工作正常,因为听众能够接收来自Q的消息。但是当我的终点因某些原因而停止时,消息不会回滚到Q.想知道jms事务处理边界&我将能够如果我的终点失败,请回滚transactoion。目前没有发生,我在这里丢失的任何东西JMS事务在WSO2中回滚ESB4.9.0

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="TestJMSListener" 
     transports="jmslistener1,jmslistener2" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <call> 
      <endpoint key="StoreJMSMSg"/> 
     </call> 
     </inSequence> 
     <faultSequence> 
     <property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/> 
     </faultSequence> 
    </target> 
    <parameter name="transport.jms.ContentType">application/xml</parameter> 
    <parameter name="transport.jms.Destination">TestQueue</parameter> 
    <description/> 
</proxy> 

回答

0

您是否还在axis2.xml中设置了以下内容?

<parameter name="transport.jms.SessionTransacted">true</parameter> 
0

保证传送EIP通过本地存储并将其传送到接收方的数据存储区来确保安全传送邮件。即使接收机处于离线状态,EIP也可确保接收机上线时消息通过。

使用消息存储和消息处理器可以解决这个问题。请参阅link