Итерирование пользовательских коллекций в Apache - PullRequest
0 голосов
/ 28 августа 2018

У меня есть требование к основному маршруту и ​​дочернему маршруту. В основной маршрут попадет список объектов, там мне нужно сделать вызов дочернему маршруту для каждого отдельного элемента в списке. Затем в дочернем маршруте будет выполнен вызов веб-сервиса, добавив этот элемент в качестве одного из параметров.

Код:

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

1 Ответ

0 голосов
/ 29 августа 2018

Поместите оператор журнала после Splitter и запустите код.

.split(body())
.log("How many log lines do you receive?")

Если вы получаете только одну строку журнала, Splitter не будет работать должным образом. Затем вы можете попробовать использовать другую версию Camel.

Если вы получаете столько строк журнала, сколько вашего ArrayList содержит элементов, итерация работает нормально, и у вас есть другая проблема. Затем вы должны выяснить реальную проблему и задать новый вопрос.

Если вы вообще не получите строку журнала, ваше условие в when не выполнено.

...