我们在MAC OSX 10.7.4上使用WSO2 ESB 4.0.3和数据服务功能。
我有代理服务,它将消息转发给数据服务。当数据服务中出现任何故障时,故障将返回到OUTSEQUENCE中的调用代理服务。现在,如果有任何错误,我将此转发到代理服务的常见错误处理程序,这在OUTSEQUENCE中发生。这个常见的错误处理程序只是另一个代理服务。
现在,当错误处理完成时,控件将返回原始代理服务,该服务调用错误处理代理服务。但是,当控件从错误处理程序返回到原始代理服务时,AGAIN开始执行代理服务的OUTSEQUENCE。
所以对我来说,如果发生数据服务故障,它会执行两次代理服务的OUTSEQUENCE。
这是标准行为吗?我习惯于Java类执行,当方法调用返回时,它开始执行下一行。但是看起来它从头开始再次开始执行OUTSEQUENCE。
为了避免再次从头开始执行OUTSEQUENCE,我在Error hanlder proxy中的“transport”范围填充值,这将在filter mediator中使用,以避免在OUTSEQUENCE中执行两次逻辑。
我试图找出是否有任何SOAP标头我可以使用而不是设置属性。我看到没有像“From”或“ReplyTo”那样设置SOAP标头,我相信MessageId会发生消息协调。我们如何使用这些SOAP头而不是属性来转移流逻辑。
请帮忙。 谢谢 作者Abhijit
答案 0 :(得分:0)
在这种情况下,您可以使用call out mediator而不是使用send mediator来调用Web服务。这会阻止调用错误处理服务并返回到同一个地方。
使用esb 4.0.3,您可以在发送中介级别指定接收序列。默认情况下,响应在序列级别接收。 例如。 < send receive =“fundTransferSequence”> <端点> < address encoding =“UTF-8”statistics =“disable” uri =“http://10.1.23.11:8888/EgateValidWS/EgateValidWSSoapHttpPort”>
</address>
</endpoint>
&LT; /发送&GT;