Wso2 ESB:如何提取序列中的 "From" 或 "To" 或 "wsa:To"?

Wso2 ESB: How to extract "From" or "To" or "wsa:To" in a sequence?

每当出现故障或异常时,我都会从 proxyService 调用故障序列。由于这个故障序列是所有代理服务共有的,如何提取出是哪个proxyService调用了故障序列?

例如ProxyService A发生故障,调用"faultSequence"。在 FaultSequence 代码中,我如何检测它确实是由 ProxyService A 而不是另一个 proxyService 调用的?

我已经尝试了一些不同的东西,比如提取 headers、To、From、日志中介等,但我无法在我的日志中获得任何值。

我还看到一个简单的发送中介(没有端点或地址的发送中介)响应调用代理服务,因此故障序列必须知道将消息发送到哪里即消息最初来自哪里。查看文档:https://docs.wso2.com/display/ESB460/Send+Mediator,它说消息被发送到 wsa:To 但我无法将该值提取到 属性 或日志。 感谢您的帮助。

谢谢

您可以通过查看名为 "To" 的 属性 找到已调用的代理服务:<property name="PROXY_NAME" expression="get-property('To')"/>

如果你这样记录:

<log level="custom">
  <property name="ProxyName" expression="get-property('PROXY_NAME')"/>
</log>

你应该有类似 "services/MyProxyName"

默认情况下,没有端点引用的发送中介将当前响应发送回调用方,但您可以将当前消息发送到动态地址设置 header "To"。将当前消息发送到 http://host:port/myService 的示例:

<header name="To" value="http://host:port/myService"/>
<send/>

如果你想在 inSequence 中发回一个虚拟响应,你必须删除 header "To" :

<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
<payloadFactory>
    <format>
        <ns:getQuoteResponse xmlns:ns="http://services.samples">
            ...
        </ns:getQuoteResponse>
    </format>
</payloadFactory>
<send/>