【发布时间】:2016-07-17 10:43:06
【问题描述】:
我有一条如下所述的路线。该路由定期轮询一个目录并读取一个大尺寸的 .csv 文件。然后它将文件分成 1000 行的块并将其发送到 seda queue(firstQueue)。我在这个 seda 队列上有 15 个并发消费者。
route.split().tokenize("\n", 1000).streaming().to("seda:firstQueue?concurrentConsumers=15").process(myProcessor).to("seda:secondQueue?concurrentConsumers=15").process(anotherMyProcessor);
1) 15 个并发消费者是什么意思 - 是否意味着 15 个线程从 seda 读取数据并将其传递给 myProcessor 的一个实例?还是创建了 15 个单独的 myProcessor 实例,每个实例都作用于同一数据副本?注意myProcessor是一个单例,如果我把它改成原型会发生什么。
2) 是否有可能任何两个或多个线程选择相同的数据并将其传递给myProcessor?还是保证不会有两个线程拥有相同的数据?
感谢您的快速响应。谢谢!
【问题讨论】:
-
我使用的是相当旧版本的骆驼 - 2.10.1。有谁知道这个版本中的 seda 和 concurrentConsumers 是否存在问题,并且可能已在以后的版本中修复?
标签: java multithreading concurrency apache-camel