apache camel-seda端点多播

时间:2019-07-18 05:10:18

标签: apache-camel spring-camel

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输出),但是整个请求链正在排队并且没有并行运行。例如,我在“开始”端点上并行发送了两条消息,一个完整的链只有在另一个完整的链完成后才被触发。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使开始和加入组件使用seda。而process1和process2将multicastparalellProcessing一起使用,这将负责并行运行这些进程。

对于seda:start,请使用

from("seda:start?concurrentConsumers=10"),这将开始并行接受10个请求。有关更多信息,请查看http://camel.apache.org/seda.html