在骡子流中同时处理Web服务调用

时间:2014-03-12 18:25:29

标签: mule

重新提出问题 - 我有一个要求,在个人骡子流中,我必须进行3次网络服务呼叫(S1,S2,S3)。

<flow>
 <Service1>
 <Service2>
 <Service3>
</flow>

我的要求是致电Service1&amp;等待它完成(或者如果失败并返回则处理错误)然后解雇Service2&amp; Service3同时/同时。我想等待Service1的响应,因为我打电话给Service2&amp; Service3使用Service1的部分响应作为输入。所以我的骡子流应该等待Service1的响应,然后才能解锁Service2&amp;服务3。但是如果&amp;当Service1成功时,它应该同时调用Service2&amp; Service3同时。 即使Service2&amp; Service3失败,我想继续,并且没有为此流程的调用者失败/错误。

任何类型的示例代码/链接都会很棒。

2 个答案:

答案 0 :(得分:0)

如果您想一个接一个地调用3个服务,并且任何服务的失败都不会影响剩余的流量,您可以尝试以下类型的设计。

<flow name="main_flow">
    <flow-ref name="private_flow_call_to_service_1"></flow-ref>
    <flow-ref name="private_flow_call_to_service_2"></flow-ref>
    <flow-ref name="private_flow_call_to_service_3"></flow-ref>
</flow>

<flow name="private_flow_call_to_service_1" processingStrategy="synchronous">
    <!-- call service 1  -->
    <catch-exception-strategy>
        <!-- Catch and handle any error or failure while making call to service 1 -->
    </catch-exception-strategy>
</flow>

<flow name="private_flow_call_to_service_2" processingStrategy="synchronous">
    <!-- call service 2  -->
    <catch-exception-strategy>
        <!-- Catch and handle any error or failure while making call to service 2 -->
    </catch-exception-strategy>
</flow>

<flow name="private_flow_call_to_service_3" processingStrategy="synchronous">
    <!-- call service 3  -->
    <catch-exception-strategy>
        <!-- Catch and handle any error or failure while making call to service 3 -->
    </catch-exception-strategy>
</flow>

希望这有帮助。

答案 1 :(得分:0)

Mule scatter-gather组件用于同时执行多个流。 该组件已在Mule 3.5中引入 参考: - https://developer.mulesoft.com/docs/display/current/Scatter-Gather

要确保一个流的失败不会影响其他流,您可以将流包装在<async/>