Как следует из названия, я пытаюсь получить список файлов из каталога FTP для отправки в ответ на запрос GET.
У меня есть текущая реализация маршрута отдыха:
rest().get("/files")
.produces(MediaType.APPLICATION_JSON_VALUE)
.route()
.routeId("restRouteId")
.to("direct:getAllFiles");
На другой стороне прямого маршрута у меня есть следующие маршруты:
from("direct:getAllFiles")
.routeId("filesDirectId")
.to("controlbus:route" +
"?action=start" +
"&routeId=ftpRoute");
from([ftpurl])
.noAutoStartup()
.routeId("ftpRoute")
.aggregate(constant(true), new FileAggregationStrategy())
.completionFromBatchConsumer()
.process(filesProcessor)
.to("controlbus:route" +
"?action=stop" +
"&routeId=" + BESTANDEN_ROUTE_ID);
Проблема под рукойчто с помощью этого метода запрос не ожидает завершения всего процесса, он почти мгновенно возвращает пустой ответ с StatusCode 200.
Я пробовал несколько решений, но все они терпят неудачу любым из двух способов: либозапрос получает ответ, даже если маршрут еще не завершен ИЛИ маршрут застревает в ожидании обмена информацией в полете в определенном месте и ожидает 5-минутного тайм-аута для продолжения.
Заранее спасибо за ваш совет и /или помогите!
Примечание. Я работаю в приложении Spring Boot (2.0.5) и Apache Camel (2.22.1).