from("seda:start)
.multicast(new GroupedBodyAggregationStrategy())
.parallelProcessing()
.to("seda:process1", "seda:process2")
.end()
.to("seda:join");
该计划使process1和process2并行运行,并且其输出在连接端点上可用。 如果在“ direct”上,上面的方法工作正常,但是在“ seda”上的行为是即使process1和process2仍在进行中,“ join”也被立即调用。
我尝试向process1和process2添加以下选项:
to("seda:process1?waitForTaskToComplete=Always", "seda:process2?waitForTaskToComplete=Always")
现在一切正常(我可以在连接端点上检索process1和process2输出),但是整个请求链正在排队并且没有并行运行。例如,我在“开始”端点上并行发送了两条消息,一个完整的链只有在另一个完整的链完成后才被触发。
有什么想法吗?
答案 0 :(得分:0)
您可以使开始和加入组件使用seda
。而process1和process2将multicast
与paralellProcessing
一起使用,这将负责并行运行这些进程。
对于seda:start
,请使用
from("seda:start?concurrentConsumers=10")
,这将开始并行接受10个请求。有关更多信息,请查看http://camel.apache.org/seda.html