【发布时间】:2013-02-01 19:47:20
【问题描述】:
我正在尝试在我的流程中创建一个故障安全场景。
我的流程如下所示。它涉及一些实习生调用网络服务的子流程。 在任何情况下,如果其中一个 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>
【问题讨论】:
-
子流交互是否相互依赖?如果没有,您可以将它们并行化,每个都会单独死亡。
-
他们有点依赖。在每个子流程中,我需要从 web 服务响应中提取一些数据并将其添加到输入 paylaod。然后这成为下一个子流的paylaod。
-
正如你所说,一个子流的结果成为另一个子流的有效负载,那么调用第二个子流而不接收来自第一个响应的响应将没有多大意义。跨度>
-
@Learner 是对的:如果子流程交互是依赖的,那么如果您无法获取继续所需的数据,为什么还要继续主流程?
-
正如我所说,它是一种不直接使用浓缩器的浓缩。因为丰富是基于一些逻辑的。它就像输入被保留。在每个子流中,从适合 Web 服务调用的有效负载创建一个请求。然后从响应中提取所需数据并将其丰富到保留的输入有效负载中。然后把这个丰富的paylaod设置为下一部分的paylaod。