Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 并行多播路由w/POST结束_Java_Apache Camel - Fatal编程技术网

Java 并行多播路由w/POST结束

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

我有一个骆驼路线,它接收包含多个任务的单个消息。使用并行多播,我可以并行运行这些任务。这似乎奏效了。但是,我需要在任何任务完成后立即发布任务结果。取而代之的是,在postResult可以将结果发回之前,它会等待这两种任务类型完成

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