У меня есть требование к основному маршруту и дочернему маршруту. В основной маршрут попадет список объектов, там мне нужно сделать вызов дочернему маршруту для каждого отдельного элемента в списке.
Затем в дочернем маршруте будет выполнен вызов веб-сервиса, добавив этот элемент в качестве одного из параметров.
Код:
from("direct:SupplierRoute")
.choice()
.when(header(IS_SUPPLIER_AVAILABLE).isEqualTo(true))
.split(body())
.parallelProcessing()
.streaming()
.to("direct:SUPGetHotelAggregatorRatesRQ")
.bean(parallelProcessingRequestProcessor)
.end()
.end()
.end();
from("direct:SUPGetHotelAggregatorRatesRQ")
.process(startOperation(DISTRIBUTION, GET_HOTEL_AGGREGATOR_RATES_API_GENERATE_VM_REQUEST))
.to("velocity:velocity/GetHotelAggregatorRatesRQToGetHotelSupplierRatesRQ.vm")
.process(endOperation(DISTRIBUTION, GET_HOTEL_AGGREGATOR_RATES_API_GENERATE_VM_REQUEST))
.end();
Я устанавливаю значение для тела обмена, как показано ниже,
public static final List<HotelRefs.HotelRef> supplierHotelRefs = new ArrayList();
exchange.getIn().setBody(supplierHotelRefs);
Но приведенный выше пример кода не работал, если кто-нибудь сообщит нам, есть ли какой-нибудь подход в верблюде для перебора пользовательских коллекций на уровне маршрута.
Спасибо,
Raghavan