2016-03-24 36 views
0

非常簡單的問題。我使用的是vanilla wso2esb 4.9.0並試用了死信通道設計。它失敗!存儲在隊列中的消息是端點收到的肥皂故障錯誤。我究竟做錯了什麼?這是正確的?那我下面的例子是:https://docs.wso2.com/display/IntegrationPatterns/Dead+Letter+Channelwso2esb死信通道在版本4.9.0中不起作用

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Proxy1" 
transports="https,http" statistics="disable" trace="disable" 
startOnLoad="true"> 
<target> 
    <inSequence> 
     <log level="full" /> 
    </inSequence> 
    <outSequence> 
     <log level="full"> 
      <property name="MSG" value="Response...." /> 
     </log> 
     <send /> 
    </outSequence> 
    <faultSequence> 
     <log level="full"> 
      <property name="MSG" value="++++++++++FAULT---------...." /> 
     </log> 
     <property name="target.endpoint" value="ReportDataTransferServiceEp" /> 
     <store messageStore="ReportMessageStore" /> 
    </faultSequence> 
    <endpoint> 
     <address uri="http://localhost:8080/TestSoapESB/webservices/ReportDataTransferService" /> 
    </endpoint> 
</target> 
<publishWSDL 
    uri="http://localhost:8080/TestSoapESB/webservices/ReportDataTransferService?wsdl" /> 
<description></description> 

回答

0

爲內outSequence,你知道目前的消息是響應而不是inSequence中內接收到的初始信息,在faultSequence,你可以不依賴一個事實,即初始消息將保持不變:你必須在inSequence中的頂部保存它,它調用店faultSequence之前恢復:

節省:

<enrich> 
    <source type="envelope" clone="true"/> 
    <target type="property" property="INPUT_MESSAGE"/> 
</enrich> 

恢復:

<enrich> 
    <source type="property" clone="false" property="INPUT_MESSAGE"/> 
    <target type="envelope"/> 
</enrich> 
+0

謝謝你讓 - 米歇爾。這已經解決了問題。現在,我想知道我們如何更新死信頻道的例子,以便其他人不會陷入同一陷阱。 –

+0

我想最好的方法是創建一個Jira並要求更新文檔:https://wso2.org/jira/browse/ESBJAVA –

+0

完成:https://wso2.org/jira/browse/ESBJAVA -4515 –