[英]Parallel processing of multiple files using Apache Camel
我有数千个文件要单独处理。 我使用 Apache Camel 来处理文件
from("file:C:\\datafiles\\input?readLock=changed&readLockTimeout=100&readLockCheckInterval=20") .process(new MyProcessor()).to("file:C:\\datafiles\\output");
我一次做一个文件,需要 30 分钟。
我想我可以在 10 个并发线程中完成这个处理,一次 10 个文件,我可能可以在 3 分钟而不是 30 分钟内完成。
我的问题是,实现我的 10 个线程的“正确”方法是什么? 完成后,创建一个新的,最大数量为 10。
当我在互联网上搜索时,我得到了一些建议,例如使用
但是我在这里与聚合器没有任何关系,只需要从一个远程位置处理每个文件,处理它然后将它们放在另一个远程位置。
可以使用下面的代码来实现多线程。
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");
}
}
这里的线程 api 将创建 3 个线程。 maxMessagesPerPoll=3 将在一次轮询中选取 3 个文件并将一个文件传递给一个线程,就像这里明智地选取 3 个文件(file1、file2、file3)并为一个文件提供 3 个线程(thread1、thread2、thread3)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.