末尾带有POST的并行多播路由

时间:2018-09-24 15:27:32

标签: java apache-camel

我有一条骆驼路线,会收到一条包含多个任务的消息。使用并行多播,我可以并行运行这些任务。这似乎有效。但是,我需要该职位才能使任务结果在任何任务完成后立即发生。而是在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);

1 个答案:

答案 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");