我有一条骆驼路线,会收到一条包含多个任务的消息。使用并行多播,我可以并行运行这些任务。这似乎有效。但是,我需要该职位才能使任务结果在任何任务完成后立即发生。而是在postResult可以将结果回传之前,它等待两种任务类型完成。
class Tasks
List<Task> tasks;
class ParallelTask1
// Return taskResult1
class ParallelTask2
// Return taskResult2
class PostTaskResult
// Post Result
如何修改此路线以并行发布?
from(tasks)
.multicast()
.parallelProcessing()
.to(parallelTask1)
.to(parallelTask2)
.end()
.to(postResult);
答案 0 :(得分:1)
不确定是否完全了解需求,但是您可以将postResult东西移到多播的“内部”,而不是“外部”:
from(tasks)
.multicast()
.parallelProcessing()
.to("direct:parallelTask1")
.to("direct:parallelTask2")
.end()
.log("All tasks are terminated");
from("direct:parallelTask1")
.to(parallelTask1)
.log("Task1 terminated")
.bean(postResult, "postTask1Result");
from("direct:parallelTask2")
.to(parallelTask2)
.log("Task2 terminated")
.bean(postResult, "postTask2Result");