在流程中实现故障安全行为

时间:2013-02-01 19:47:20

标签: java mule flow

我正在尝试在我的流程中创建一个故障安全方案。

我的流程如下所示。它涉及一些实习生呼叫网络服务的子流程。 在任何情况下,如果其中一个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>

3 个答案:

答案 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>

这样您就可以使用流来实现故障安全行为。

快乐编码:)