在Mule中,我有很多记录要处理,其中处理包括一些计算,来回数据库等等。我们可以使用这些选项处理记录集合Mule批处理vs foreach vs分离器聚合器
- 批处理
- 的ForEach
分段聚合
那么,它们之间的主要区别是什么?我们什么时候应该选择一个给别人?
例如,Mule批处理选项似乎没有批作业范围变量定义。或者,如果我想要利用多线程来加快整体任务呢?或者,如果我想在处理期间修改有效载荷,哪个更好?
在Mule中,我有很多记录要处理,其中处理包括一些计算,来回数据库等等。我们可以使用这些选项处理记录集合Mule批处理vs foreach vs分离器聚合器
分段聚合
那么,它们之间的主要区别是什么?我们什么时候应该选择一个给别人?
例如,Mule批处理选项似乎没有批作业范围变量定义。或者,如果我想要利用多线程来加快整体任务呢?或者,如果我想在处理期间修改有效载荷,哪个更好?
当你写“相当多”我认为这太过分了主内存,这排除了spliter /聚合器,因为它已收集所有记录,将其返回为列表。
我假设你有一个流或迭代器的记录,否则,你可能有一个内存问题...
因此,当使用的for-each以及何时使用批处理?
最简单的解决方案,但它也有一些缺点:
在循环中,你可以有几个步骤(消息处理器)处理您的记录(例如对于所提到的数据库查询)。
可能是一个缺点,可能是一个优点:循环是同步的。 (如果要处理异步,请将其包装在异步范围内。)
多一点的东西做/理解,但更多的功能:
所以看起来你更好的使用批次。
对于Splitter和Aggregator,您负责编写拆分逻辑,然后在处理结束时将它们连接回去。当您想要使用不同服务器异步处理记录时,它非常有用。与其他选项相比,它不太可靠,因此可以进行并行处理。
Foreach更可靠,但它使用单线程(同步)迭代地处理记录,因此并行处理是不可能的。每条记录默认创建一条消息。
批量处理旨在以非常快速和可靠的方式处理数百万条记录。默认情况下,16个线程将处理您的记录,并且它也是可靠的。
请通过以下链接了解更多详情。
https://docs.mulesoft.com/mule-user-guide/v/3.8/splitter-flow-control-reference
如果我想在处理过程中修改有效载荷,哪个更好? – mCeviker
你可以在每种方法中做到这一点,如果你有很大的记录,并希望更快的表现,那么批次将是最好的。 –
可能值得指出“批处理”需要企业运行时。 – PeterX