Как распараллелить цикл в Apache Camel?
Помогите распараллелить цикл в Apaсhe Camel, чтобы запросы к API выполнялись параллельно.
from("direct:someRoute")
.setBody(simple("content"))
.routeId("someRouteId")
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.threads(8)
.loopDoWhile(bodyAs(String.class).isGreaterThan(1))
.process(exchange -> {
page = page + 1;
exchange.getIn().setHeader(Exchange.HTTP_QUERY, "lang=ru&page_size=25&page=" + page);
})
.to("https://example.com/api/v1.0/events")
.choice()
.when(body().isNotNull())
.unmarshal(format)
.process(new EventProcessor(eventRepository))
.marshal(format)
.otherwise()
.log("${body}")
.endChoice()
.end()
.end();
Ответы (1 шт):
Автор решения: bvn13
→ Ссылка
Попробуйте вместо тела цикла использовать отправку в direct очередь. А из неё другим маршрутом можно потреблять несколькими consumer-ами параллельно.