Как запустить camel route из клиентского запроса?

#spring-boot #apache-camel #spring-camel

#весенняя загрузка #apache-camel #spring-camel

Вопрос:

У меня есть этот маршрут:

 from("timer://test?repeatCount=1").routeId("newRoute")
    .streamCaching()
    .process(exchange -> exchange.getIn()
        .setBody(exchange.getIn()
            .getBody()))
    .marshal()
    .json(JsonLibrary.Jackson)
    .setHeader(Exchange.HTTP_METHOD, constant("GET"))
    .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
    .to("http://localhost:8080/getAllUsers")
    .log(LoggingLevel.INFO, "This is my body: ${body}")
    .to("activemq:queue://new-queue");
  

Когда он находится в @override configure(), он работает при запуске приложения. Но что я хочу сделать, это вызвать (запустить) этот маршрут из Spring Boot RestController.

У меня есть конечная точка GET, и я хочу, чтобы при ее вызове маршрут выполнял это.

Комментарии:

1. как указано в названии метода, #configure настраивает маршрут внутри контекста camel, он не «запускается». если вы хотите отправить сообщение по этому маршруту, вы должны использовать шаблон производителя. camel.apache.org/producertemplate.html

Ответ №1:

Вы можете заменить предложение ‘from’ чем-то вроде:

 from("direct:runGetAllUsers")
  

затем в вашем контроллере Spring Rest вы можете вызвать маршрут Camel. В «Верблюд в действии 2″ есть пример с исходным кодом здесь.