2016-12-09 6 views
0

Я получаю как странное поведение от многоадресной передачи Camel. Похоже, я делаю что-то неправильно, но не могу указать.Camel Multicast ведет себя странно

Я создаю групповой маршрут к двум конечным точкам, как показано ниже:

Start point : direct://start 
endpoint : direct://route1 
endpoint : direct://route2 

Маршруты информация:

1) from("direct://start").process(new DeepCloneRequest()).multicast(new Aggregator()).to("direct://route1","direct://route2")

2) from("direct://route1").setheader(<to use later in processor>).process(<do some preprocessing>).to("rest url1").processor(<to do post processing>).end

3) from("direct://route2").setheader(<to use later in processor>).process(<do some preprocessing>).to("rest url2").processor(<to do post processing>).end

Что я не лед - это то, что в моем маршруте №3 в предварительной обработке я получил обмен из предварительной обработки номера 2 вместо DeepCloneRequest из многоадресной рассылки.

Может кто-нибудь, пожалуйста, объясните это? Я хочу получить тот же запрос, что и многоадресный прием в обоих маршрутах 2 и 3.

Верблюд, который я использую, является 2.17.3.

ответ

1

Вы должны использовать функцию OnPrepare см http://camel.apache.org/multicast.html

«многоадресной передачи будет скопировать исходный обмена и многоадресной рассылки каждой копии. Однако копия неполную копию, так что в случае, если у вас есть mutateable тела сообщений, то любые изменения будут отображаться другими скопированными сообщениями. Если вы хотите использовать глубокую копию клона, вам нужно использовать пользовательский onPrepare, который позволяет это сделать с помощью интерфейса процессора ».

Смежные вопросы