在Mulesoft中,我想获取一个对象数组,并为每个对象调用一个Http端点,将结果收集到一个数组中以返回给我的使用者。我已经使用ForEach循环和数组完成了此操作。一切正常。但是数组中的每个元素都调用Http端点,并且必须等待响应才能转到下一个元素。端点是相同的,尽管基于要处理的特定元素的参数略有不同。我想做的是并行发送对所有对象(或至少一个对象,可能是10个或20个)的请求,然后等待响应并将它们收集在一起。
我已经看到了一些模式,但是它们通常依赖于了解特定元素的特定端点。即,将该对象发送到该端点,将该对象发送到该端点。这里是一个动态数组,因此端点是动态的。怎么办?
谢谢
答案 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了解更多详情