以下测试代码无法正常工作
from("direct:start").setExchangePattern(ExchangePattern.InOnly).threads(5).delay(2000).bean(MessageHeaderValidator.class);
虽然 seda 是另一种选择,但请参阅Camel seda document。建议使用直接端点。
线程池
请注意通过执行以下操作将线程池添加到SEDA端点:
from("seda:stageName").thread(5).process(...)
可以结束两个BlockQueues:一个来自SEDA端点,一个来自线程池的工作队列,这可能不是你想要的。相反,你可能希望配置一个带有线程池的Direct端点,可以同步和异步处理消息。例如:
from("direct:stageName").thread(5).process(...)
您还可以直接配置处理SEDA端点上的消息的线程数 使用concurrentConsumers选项。
答案 0 :(得分:1)
对于并行处理,请使用Camel的SEDA组件和concurrentConsumers
选项:
from("seda:stageName?concurrentConsumers=5")
.process(...);
答案 1 :(得分:0)
根本原因是,消息在for循环中逐个传递,其中producerTemplate是阻塞的。