#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″ есть пример с исходным кодом здесь.