2014-11-14 43 views
0

下面的测试代码不起作用如何在Camel中使用** direct **端点执行并行处理?

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端点,和一个从线程池的workqueue,这可能不是你想要的。相反,你可能希望配置一个线程池的Direct端点,它可以同步和异步处理消息。例如:

from("direct:stageName").thread(5).process(...) 

您也可以直接配置上使用concurrentConsumers选项SEDA端点 处理消息的线程数。

+0

什么不起作用?谁说使用seda组件不被推荐? –

+0

代码并不像骆驼文档中提到的那样并行执行。 这里介绍的建议是 http://camel.apache.org/seda.html –

+0

您不应该将我们的SEDA端点与线程池一起使用。但使用一个或另一个是可以的。 –

回答

0

对于并行处理,使用骆驼SEDA组分与concurrentConsumers选项:

from("seda:stageName?concurrentConsumers=5") 
    .process(...); 
0

的根本原因是,该消息被在一个路过一个在for循环中与被阻塞producerTemplate。

+0

我建议你删除你的问题,因为它原来是别的东西比问什么 – Sikorski

相关问题