我正在尝试在我的流程中创建一个故障安全方案。
我的流程如下所示。它涉及一些实习生呼叫网络服务的子流程。 在任何情况下,如果其中一个Web服务不可用,则抛出连接拒绝异常并停止整个处理。
相反,我想要一个故障安全方案,即使当前的出站调用失败,流也应该继续下一个子流。
是否有任何消息处理器或流控制处理器可以帮助在Mule中实现此行为。
以下是我的抽象流程
<flow name="main_flow" >
....
....
<flow-ref name="subflow_1" />
....
....
<flow-ref name="subflow_2" />
....
....
<flow-ref name="subflow_3" />
....
....
</flow>
<sub-flow name="subflow_1">
....
....
<out-bound call to web-service />
....
....
</sub-flow>
<sub-flow name="subflow_2">
....
....
<out-bound call to web-service />
....
....
</sub-flow>
<sub-flow name="subflow_3">
....
....
<out-bound call to web-service />
....
....
</sub-flow>
答案 0 :(得分:1)
一个hack可能是将有效负载存储在一个变量中,有一个<catch-exception-strategy>
块可以捕获你的web服务调用异常,使用<set-payload>
来覆盖当前的有效负载,然后调用{{1从sub-flow2
catch-exception
流程手动操作
答案 1 :(得分:1)
对于每个网络服务电话,请使用first-successful
路由器,将您的网络服务呼叫作为第一个孩子,将后备机制作为第二个孩子。
答案 2 :(得分:1)
您可以使用流程实现故障安全行为。
<flow name="main_flow" >
....
....
<flow-ref name="flow_1" />
....
....
<flow-ref name="flow_2" />
....
....
<flow-ref name="flow_3" />
....
....
</flow>
<flow name="flow_1" processingStrategy="synchronous" >
....
....
<out-bound call to web-service />
....
<catch-exception-strategy >
.... Your FailSafe code to recover. Also you will have the exception here.
</catch-exception-strategy>
</flow>
这样您就可以使用流来实现故障安全行为。
快乐编码:)