Mule批处理vs foreach vs拆分聚合器
在Mule中,我有很多记录要处理,其中处理包括一些计算、来回访问数据库等。。我们可以使用这些选项处理记录集合Mule批处理vs foreach vs拆分聚合器,mule,batch-processing,mule-component,Mule,Batch Processing,Mule Component,在Mule中,我有很多记录要处理,其中处理包括一些计算、来回访问数据库等。。我们可以使用这些选项处理记录集合 批处理 弗雷奇 拆分聚合器 那么,它们之间的主要区别是什么?什么时候我们应该选择其中一个 例如,Mule批处理选项似乎没有批处理作业范围变量定义。或者,如果我想利用多线程来加快整个任务的进度,该怎么办?或者,如果我想在处理过程中修改有效负载,哪一个更好?对于拆分器和聚合器,您负责编写拆分逻辑,然后在处理结束时将它们重新连接起来。当您希望使用不同的服务器异步处理记录时,它非常有用。与
例如,Mule批处理选项似乎没有批处理作业范围变量定义。或者,如果我想利用多线程来加快整个任务的进度,该怎么办?或者,如果我想在处理过程中修改有效负载,哪一个更好?对于拆分器和聚合器,您负责编写拆分逻辑,然后在处理结束时将它们重新连接起来。当您希望使用不同的服务器异步处理记录时,它非常有用。与其他选项相比,它的可靠性较低,这里并行处理是可能的 Foreach更可靠,但它使用单线程(同步)迭代处理记录,因此不可能进行并行处理。默认情况下,每个记录创建一条消息 批处理旨在以非常快速和可靠的方式处理数百万条记录。默认情况下,16个线程将处理您的记录,这也是可靠的 请通过下面的链接了解更多详细信息 当您编写“相当多”时,我认为这对于主内存来说太多了,这就排除了拆分器/聚合器,因为它必须收集所有记录才能将它们作为列表返回 我假设您的记录在流或迭代器中,否则您可能有内存问题 那么,何时使用每一个,何时使用批次 每人 这是最简单的解决方案,但它有一些缺点:
所以看起来您最好使用批处理。我一直在使用这种方法将数组中的记录传递给存储过程。 您可以在for循环内部调用存储过程,并相应地设置for循环的批大小,以避免往返。我使用了这种方法,性能很好。您可能需要创建另一个表来记录结果,并在存储过程中使用该逻辑 下面是包含所有详细信息的链接
如果我想在处理过程中修改有效负载,哪一个更好?您可以在每种方法中都这样做,如果您有大量记录并且想要更快的性能,那么批处理将是最好的。可能值得指出的是,
批处理
需要企业运行时。您可以在For Each中调用另一个流并进行多线程处理