Mulesoft并行处理

时间:2018-07-26 10:11:50

标签: mule mule-studio mule-esb

在Mulesoft中,我想获取一个对象数组,并为每个对象调用一个Http端点,将结果收集到一个数组中以返回给我的使用者。我已经使用ForEach循环和数组完成了此操作。一切正常。但是数组中的每个元素都调用Http端点,并且必须等待响应才能转到下一个元素。端点是相同的,尽管基于要处理的特定元素的参数略有不同。我想做的是并行发送对所有对象(或至少一个对象,可能是10个或20个)的请求,然后等待响应并将它们收集在一起。

我已经看到了一些模式,但是它们通常依赖于了解特定元素的特定端点。即,将该对象发送到该端点,将该对象发送到该端点。这里是一个动态数组,因此端点是动态的。怎么办?

谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用Mulesoft Splitter-Aggregator来实现上述用例。您可以参考Spitter-Aggregator example了解更多详情。

答案 1 :(得分:1)

您可以尝试使用批处理,在该批处理中,您可以发送一个对象块,并等待整个对象块的响应,然后再进行下一个批处理。 在Mule应用程序中,批处理作为独立的代码块独立存在。批处理从外部资源接受数据集(可能是轮询输入)以分块处理。批处理可以优雅地处理在处理中可能发生的任何记录级故障,以防止整个批处理作业失败。 此外,您可以设置或删除单个记录上的变量,以便在批处理期间,Mule可以根据记录变量路由或以其他方式对一批记录进行操作。

例如

<batch:job name="myBatchJob">
    <batch:process-records>
        <batch:step name="Step1"/>
        <batch:step name="Step2"/>
        <batch:step name="Step3"/>
    </batch:process-records>
</batch:job>

<flow name="flowOne">
    ...
</flow>

您可以参考mule doc了解更多详情