【问题标题】:WSO2 ESB message idWSO2 ESB 消息 ID
【发布时间】:2013-10-29 09:39:32
【问题描述】:

我是否有可能通过 MessageId 在 WSO2 ESB 上找到消息,例如 urn:uuid:e11893c5-b033-4e99-9473-a43d66b65fbb ?例如,如果某些流程失败并且服务器记录了此类 ID。

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    玛丽安,

    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 性能。所以我建议只将它用于短期调试活动。

    【讨论】:

    • 是的,这是我在日志中找到消息 id 的地方,我的问题是关于一些默认存储在哪里可以找到此类消息。所以你的第二个建议非常适合作为解决方案。谢谢。
    【解决方案2】:

    是的,您可以使用属性调解器获取消息 ID,

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

    【讨论】:

      【解决方案3】:

      正如其他人指出的那样,您可以使用 WSO2 ESB 中的日志语句来记录消息并稍后搜索和查找。

      但是当消息流在某些时候失败时,它会变得复杂,因为消息 ID 在不同的消息流中会有所不同。 一个简单的方法是读取传入的messagID 并使用它直到最终的响应消息。

      查看here 了解详细说明。

      【讨论】:

        猜你喜欢
        • 2017-01-11
        • 1970-01-01
        • 2013-04-01
        • 2013-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多