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

时间:2019-03-19 06:03:51

标签: java parallel-processing apache-camel

我有成千上万个文件要分别处理。 我用Apache Camel处理文件

来自(“文件:C:\数据文件\输入?readLock = changed&readLockTimeout = 100&readLockCheckInterval = 20“) .process(new MyProcessor())。to(“ file:C:\ datafiles \ output”);

我一次完成每个文件,这需要30分钟。

我想我可以同时执行10个线程,一次10个文件的处理,而我可能可以在3分钟而不是30分钟内完成处理。

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

搜索互联网时,我得到了一些使用

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

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

1 个答案:

答案 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)。

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