簡體   English   中英

WSO2 ESB消息ID

[英]WSO2 ESB message id

我是否有可能通過MessageId在WSO2 ESB上找到消息,如urn:uuid:e11893c5-b033-4e99-9473-a43d66b65fbb? 例如,如果某些流程失敗並且服務器記錄了此類ID。

Maryan,

在您告知之前,ESB本身不會在任何地方記錄消息。

a)第一種方法是使用log mediator將傳入和傳出消息寫入日志:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="YourProxyService" transports="https http" startOnLoad="true">
<target>
    <inSequence>
        <log level="full">
           <property name="MESSAGE_ID" expression="get-property('MessageID')"/>
        </log>
         ...
    </inSequence>
    <outSequence>
        <log level="full">
           <property name="MESSAGE_ID" expression="get-property('MessageID')"/>
        </log>
         ...
    </outSequence>
</target>
</proxy>

然后,您將能夠在日志文件中找到傳入和傳出的消息,因為日志將包含以下內容:

 INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: http://localhost:9763/services/YourProxyService, From: 127.0.0.1, WSAction: urn:mediate, SOAPAction: urn:mediate, Direction: request, MESSAGE_ID = urn:uuid:e11893c5-b033-4e99-9473-a43d66b65fbb , Envelope:  <ENVELOPE_GOES_HERE>

b)另一種方法是在數據庫中創建表並將消息ID和信封存儲到它。

希望這可以幫助。 弗拉基米爾。

UPD:您也可以使用內置的SOAP跟蹤器,但要謹慎啟用它 - 它會達到ESB性能。 所以我建議只將其用於短期調試活動。

是的,您可以使用屬性介體獲取消息ID,

<property name="MessageID" expression="get-property('MessageID')"/>

正如其他人所指出的,您可以使用WSO2 ESB中的日志語句來記錄消息,然后進行搜索和查找。

但是當消息流在某些時候失敗時變得復雜,因為消息ID在不同的消息流中將是不同的。 一種簡單的方法是讀取傳入的messagID並使用它直到最終的響應消息。

看看這里詳細解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM