【问题标题】:Mulesoft parallel processingMulesoft 并行处理
【发布时间】:2018-07-26 10:11:49
【问题描述】:

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

我见过一些模式,但它们通常依赖于了解特定元素的特定端点。即把这个对象发送到这个端点,把那个对象发送到那个端点。这里它是一个动态数组,因此端点是动态的。这将如何实现?

谢谢

【问题讨论】:

    标签: mule mule-studio mule-esb


    【解决方案1】:

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

    【讨论】:

    • 谢谢 - 有时间我会看看这个。测试后将标记为正确
    • 我已经将 Splitter-Aggregator 用于已知端点的其他场景,但为了拆分集合,我最终使用了 Collection Splitter 和 Collection Aggregator 以及 Request-Reply VM
    【解决方案2】:

    您可以尝试使用批处理,您可以在其中发送一大块对象并等待整个块的响应,然后再继续下一批。 在 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了解更多详情

    【讨论】:

    • 谢谢。我不确定我是否可以在我的情况下应用它,但会看看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多