当前位置: 首页 > 知识库问答 >
问题:

利用Apache Camel实现多文件的并行处理

曾奇略
2023-03-14
  1. MaxMesssAgesPerPoll
  2. 线程(10)
  3. 聚合器

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

共有1个答案

柳志专
2023-03-14

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

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个文件(file1、file2、file3)并为一个文件提供3个线程(thread1、thread2、thread3)。

  • 因此,“file1”将由“thread1”和
  • 处理
  • “文件2”将由“线程2”处理
  • “文件3”将由“线程3”处理
 类似资料:
  • 问题内容: 我有一个程序处理大量文件,其中每个文件都需要做两件事:首先,读取并处理一部分文件,然后存储结果。第一部分可以并行化,第二部分不能并行化。 顺序执行所有操作非常慢,因为CPU必须等待磁盘,然后工作一点,然后发出另一个请求,然后再次等待… 我做了以下 这很有帮助。但是,我想改善两点: 在获取一个固定的顺序,而不是处理任何结果,请首先执行。我该如何更改? 有成千上万的文件要处理,启动成千上万

  • 我有一个处理大量文件的程序,其中每个文件需要做两件事:首先,读取并处理文件的一部分,然后存储生成的MyFileData。第一部分可以并行,第二部分不能并行。 按顺序做每件事都非常慢,因为CPU必须等待磁盘,然后工作一点,然后发出另一个请求,然后再次等待。。。 我做了以下事情 这很有帮助。然而,我想改进两件事: > 以固定顺序执行,而不是首先处理任何可用的结果。如何更改它? 有数千个文件需要处理,启

  • 问题内容: 我正在编写一个POC来处理大约10亿行以上的超大文本文件,并为此进行了尝试。 但是,当运行此命令时,会出现此错误; 紧急:单个文件或套接字上的并发操作过多(最大1048575) 我还没有在网上找到任何可以解决此特定错误的信息。我不确定这是否是文件描述符问题,错误中列出的最大值远高于我的限制500,000。 做这个的最好方式是什么? 不太明显,它是我在处理数据时将调用的实际功能的替代品。

  • 本文向大家介绍java利用CountDownLatch实现并行计算,包括了java利用CountDownLatch实现并行计算的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了利用CountDownLatch实现并行计算的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Asp.net利用一般处理程序实现文件下载功能,包括了Asp.net利用一般处理程序实现文件下载功能的使用技巧和注意事项,需要的朋友参考一下 首先有一个html页面,页面有一个链接,点击链接弹出文件下载/保存(类似迅雷下载链接) 一般处理程序的代码如下 点击第一个链接访问,显示如下: 点击第二个链接访问,下载文件: 由于我之前已经测试过一次,所以这次下载时命名为readme(1).t

  • 考虑一个阶跃豆: 要求:在Reader中,它从文件中读取(Entity1的)记录。在处理器中,它进行处理,在Writer中,它写入数据库。 在TaskExecutor之前,只创建了一个线程,它将在读取器和处理器中循环1000次,如上面的块设置中所定义的。然后它将移动到writer并写入所有1000条记录。它将再次从记录编号1001开始,然后在读取器和处理器中处理另外1000条记录。这是一个同步执行