首页 > 解决方案 > 并行多播路由,末尾有 POST

问题描述

我有一条骆驼路线,它接收一条包含多个任务的消息。使用并行多播,我可以并排运行这些任务。这似乎有效。但是,我需要在任何任务完成后立即发布任务结果。相反,在 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);

标签: javaapache-camel

解决方案


不确定是否完全理解要求,但您可以将 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");

推荐阅读