Вы можете использовать заголовок сообщения, установленный вашим решением, и маршрутизацию на основе содержимого для управления потоком сообщений.Например:
В вашем маршруте, который получает сообщение
...
.from(endpointreceivingmessage)
.process(decider)
.recipientList(simple("direct:${header.destinationRoute"));
В вашем процессоре принятия решений
...
doProcess(Exchange exchange) throws Exception{
Message message = exchange.getIn();
//logic to determine next step
message.setHeader("destinationRoute", "DestinationRoute1");
exchange.setIn(message);
}
Тогда вы могли бы иметь другие маршруты для вашего следующего шага, которыйтакже могут быть маршруты с процессорами для цепочки решений.
Альтернативой использованию receientList будет использование выбор:
.choice
.when(simple("{header.destinationRoute} is 'DestinationRoute1'"))
.to("direct:DestinationRoute1")
.when(simple("{header.destinationRoute} is 'DestinationRoute2'"))
.to("direct:DestinationRoute2")
...