0

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

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

3 回答 3

1

一种技巧可能是将有效负载存储在一个变量中,有一个<catch-exception-strategy>块将捕获您的 Web 服务调用异常,用于<set-payload>覆盖当前有效负载,然后从流程sub-flow2手动调用catch-exceptionsub-flow1

于 2013-02-01T20:04:17.590 回答
1

对于每个 Web 服务调用,使用first-successful路由器,将您的 Web 服务调用作为第一个子节点,将回退机制作为第二个子节点。

于 2013-02-01T20:32:08.637 回答
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>

通过这种方式,您可以使用流程实现故障安全行为。

快乐编码:)

于 2013-03-14T15:08:55.923 回答