Java 并行多播路由w/POST结束
我有一个骆驼路线,它接收包含多个任务的单个消息。使用并行多播,我可以并行运行这些任务。这似乎奏效了。但是,我需要在任何任务完成后立即发布任务结果。取而代之的是,在postResult可以将结果发回之前,它会等待这两种任务类型完成Java 并行多播路由w/POST结束,java,apache-camel,Java,Apache Camel,我有一个骆驼路线,它接收包含多个任务的单个消息。使用并行多播,我可以并行运行这些任务。这似乎奏效了。但是,我需要在任何任务完成后立即发布任务结果。取而代之的是,在postResult可以将结果发回之前,它会等待这两种任务类型完成 class Tasks List<Task> tasks; class ParallelTask1 // Return taskResult1 class ParallelTask2 // Return taskResult2
class Tasks
List<Task> tasks;
class ParallelTask1
// Return taskResult1
class ParallelTask2
// Return taskResult2
class PostTaskResult
// Post Result
不确定是否完全理解了要求,但您可以将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");
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");