我有成千上万个文件要分别处理。 我用Apache Camel处理文件
来自(“文件:C:\数据文件\输入?readLock = changed&readLockTimeout = 100&readLockCheckInterval = 20“) .process(new MyProcessor())。to(“ file:C:\ datafiles \ output”);
我一次完成每个文件,这需要30分钟。
我想我可以同时执行10个线程,一次10个文件的处理,而我可能可以在3分钟而不是30分钟内完成处理。
我的问题是,实现我的10个线程的“正确”方法是什么?完成后,创建一个新的,最大数量为10。
搜索互联网时,我得到了一些使用
的建议但是我在这里与聚合器没有任何关系,只需要从一个远程位置处理每个文件,进行处理,然后将它们放在另一个远程位置。
答案 0 :(得分:0)
可以使用下面的代码实现多线程。
公共类RouterConfig扩展RouteBuilder { 公共无效configure()引发异常{ 从(“文件:C:\数据文件\输入?readLock = changed&readLockTimeout = 100&readLockCheckInterval = 20&maxMessagesPerPoll = 3“) .threads(3,3,“ myThread”) .process(新的MyProcessor()) .to(“文件:C:\ datafiles \ output”); } }
此处线程api将创建3个线程。 maxMessagesPerPoll = 3将在一次轮询中选择3个文件,并将一个文件传递给一个线程,就像明智的做法,在这里它选择3个文件(file1,file2,file3),并给一个文件3个线程(thread1,thread2,thread3)。