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/>
每当出现故障或异常时,我都会从 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/>