我是否有可能通过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并使用它直到最终的响应消息 .
看看here详细解释 .
3 回答
Maryan,
在您告知之前,ESB本身不会在任何地方记录消息 .
a) 第一种方法是使用log mediator将传入和传出消息写入日志:
然后,您将能够在日志文件中找到传入和传出的消息,因为日志将包含以下内容:
b) 另一种方法是在数据库中创建表并将消息ID和信封存储到它 .
希望这可以帮助 . 弗拉基米尔 .
UPD: 您也可以使用内置的SOAP跟踪器,但要谨慎启用它 - 它会达到ESB性能 . 所以我建议只将它用于短期调试活动 .
是的,您可以使用属性介体获取消息ID,
正如其他人所指出的,您可以使用WSO2 ESB中的日志语句来记录消息,然后进行搜索和查找 .
但是当消息流在某些时候失败时变得复杂,因为不同消息流中的消息ID将是不同的 . 一种简单的方法是读取传入的messagID并使用它直到最终的响应消息 .
看看here详细解释 .