gpt4 book ai didi

java - 使用 Apache Camel 并行处理多个文件

转载 作者:行者123 更新时间:2023-12-02 01:36:09 25 4
gpt4 key购买 nike

我有数千个文件需要单独处理。我使用 Apache Camel 来处理文件

from("文件:C:\datafiles\input?readLock=changed&readLockTimeout=100&readLockCheckInterval=20").process(new MyProcessor()).to("文件:C:\datafiles\output");

我一次处理一个文件,需要 30 分钟。

我想我可以在 10 个并发线程、一次 10 个文件中完成此处理,并且我可能可以在 3 分钟而不是 30 分钟内完成。

我的问题是,实现 10 个线程的“正确”方法是什么?当一个完成后,创建一个新的,最大数量为 10。

当我在互联网上搜索时,我得到了一些建议,例如使用

  1. maxMesssagesPerPoll
  2. 线程(10)
  3. 聚合器

但我与这里的聚合器没有任何关系,只需要从一个远程位置处理每个文件,处理它然后将它们放置在另一个远程位置。

最佳答案

可以使用下面的代码来实现多线程。

public class RouterConfig extends RouteBuilder {
public void configure() throws Exception {
from("file:C:\datafiles\input?readLock=changed&readLockTimeout=100&readLockCheckInterval=20&maxMessagesPerPoll=3")
.threads(3, 3, "myThread")
.process(new MyProcessor())
.to("file:C:\datafiles\output");
}
}

这里的threads api将创建3个线程。maxMessagesPerPoll=3 将在一次轮询中选择 3 个文件并将一个文件传递给一个线程,同样,这里它选择 3 个文件(文件 1、文件 2、文件 3)并为一个文件提供 3 个线程(线程 1、线程 2、线程 3)。

  • 因此,“file1”将由“thread1”处理
  • “file2”将由“thread2”处理
  • “file3”将由“thread3”处理

关于java - 使用 Apache Camel 并行处理多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55234560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com