2016-06-10 5 views
0

다음과 같이 JMS 수신기를 만들었습니다. 청취자가 Q에서 메시지를받을 수 있기 때문에 모든 것이 잘 작동합니다.하지만 몇 가지 이유로 인해 내 엔드 포인트가 다운되었을 때 메시지가 롤백되지 않습니다. jms 트랜잭션 경계를 알고 싶습니다 & 내 엔드 포인트가 실패 할 경우 트랜잭션을 롤백하십시오. 현재 일어나지 않고 있습니다. 여기에 누락 된 내용이 있습니다.WSO2의 JMS 트랜잭션 롤백 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을 참조하십시오.