首页 文章

Apache骆驼的Seda的并发消费者

提问于
浏览
0

我有一条如下所述的路线 . 路由定期轮询目录并读取大型.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 ?或者是否保证没有两个线程具有相同的数据?

欣赏快速回复 . 谢谢!

1 回答

  • 1

    我的骆驼有点生锈,但我很确定

    • 有15个线程正在运行 . 每个人都会从队列中读取一条消息并调用myProcessor . 我的处理器只有一个实例,因此您需要确保它是线程安全的 . 我从来没有试过它,但我不相信将范围改为原型会有所作为 .

    • 两个线程不应从队列中获取相同的消息 . 在正常运行中,每条消息应该只处理一次 . 但是,有一些错误条件导致同一消息中的结果被处理两次,最明显的一种情况是您通过处理文件来重新启动应用程序 .

相关问题