параллельный многоадресный маршрут с POST в конце - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть верблюжий маршрут, который получает одно сообщение с несколькими заданиями.Используя параллельную многоадресную рассылку, я могу выполнять эти задачи бок о бок.Это похоже на работу.Тем не менее, мне нужно сообщение для результатов задачи, как только закончится любая задача.Вместо этого перед тем, как 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 голосов
/ 26 сентября 2018

Не уверен, что полностью понял требования, но вы можете переместить материал 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...