我是否有可能通过 MessageId 在 WSO2 ESB 上找到消息,例如 urn:uuid:e11893c5-b033-4e99-9473-a43d66b65fbb ?例如,如果某些流程失败并且服务器记录了此类 ID。
问问题
4133 次
3 回答
4
玛丽安,
ESB 本身不会在任何地方记录消息,除非您告诉它这样做。
a)第一种方法是使用日志中介将传入和传出消息写入日志:
<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 性能。所以我建议只将它用于短期调试活动。
于 2013-11-11T18:15:35.070 回答
0
是的,您可以使用属性调解器获取消息 ID,
<property name="MessageID" expression="get-property('MessageID')"/>
于 2013-10-29T16:05:52.163 回答
0
正如其他人指出的那样,您可以使用 WSO2 ESB 中的日志语句来记录消息并稍后搜索和查找。
但是当消息流在某些时候失败时,它会变得复杂,因为消息 ID 在不同的消息流中会有所不同。一个简单的方法是读取传入的messagID 并使用它直到最终的响应消息。
在这里查看详细说明。
于 2017-12-12T22:21:02.737 回答