在Mulesoft中,我想获取一个对象数组,并为每个对象调用一个Http端点,将结果收集到一个数组中,然后返回给我的使用者。我已经使用一个ForEach循环和一个数组实现了这一点。所有工作正常。但是数组中的每个元素都会调用Http端点,并且在转到下一个元素之前必须等待响应。端点是相同的,尽管基于正在处理的特定元素的参数略有不同。我想要做的是并行发送对所有对象(或者至少是其中的一大块,可能是10个或20个)的请求,然后等待响应并将它们收集在一起。
我见过一些模式,但它们通常依赖于了解特定元素的特定端点。ie将这个对象发送到这个端点,将那个对象发送到那个端点。这里它是一个动态数组,因此端点是动态的。如何做到这一点?
谢谢
发布于 2018-07-26 19:27:01
您可以使用Mulesoft Splitter-Aggregator来实现上述用例。有关更多详细信息,请参阅Spitter-Aggregator example。
发布于 2018-07-26 20:15:06
您可以尝试使用批处理,在此批处理中,您可以发送一个对象块,并在进入下一个批处理之前等待整个对象块的响应。在Mule应用程序中,批处理作为独立的代码块独立存在。batch从外部资源接受数据集--可能是对输入的轮询--以块为单位进行处理。批处理可以优雅地处理处理过程中可能出现的任何记录级故障,以防止整个批处理作业失败。此外,您可以设置或删除单个记录上的变量,以便在批处理期间,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
https://stackoverflow.com/questions/51536368
复制相似问题