Когда я пытаюсь настроить новую прямую конечную точку в Apache Camel, метод configure () моего RouteBuilder не запускается, и я не могу понять причину.
У меня есть метод configureRESTRoute (), который я реализовал следующим образом:
private RouteBuilder configureRESTRoute(DataSource ds) {
RouteBuilder restRoute = new RESTRoute() {
@Override
public void configure() throws Exception {
from("direct:" + ds.getConfig().get("SOURCENAME"))
.log("----Configuring new REST Route----: " + "direct:" + ds.getConfig().get("SOURCENAME"))
.setHeader(Exchange.HTTP_PATH, simple((String) ds.getConfig().get("HTTP_PATH")))
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.to("http4:" + ds.getConfig().get("HTTP_HOST"))
.log("----Successfully configured----");
}
};
return restRoute;
}
Класс DataSource содержит карту деталей конфигурации для конкретного источника данных. В этом методе я пытаюсь построить Маршрут, который позже добавляется в CamelContext. В настоящее время он возвращает пустой маршрут, потому что метод configure () пропускается. К сожалению, не генерируется исключение или какое-либо другое сообщение об ошибке.




Чтобы Camel выбрал ваш маршрут, получите объект CamelContext и вызовите для него метод addRoutes():
Итак, определите свои новые маршруты в RouteBuilder:
public class RESTRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:...").to("...");
}
}
затем вызовите addRoutes() и передайте свой RouteBuilder:
context.addRoutes(new RESTRoute());
Если вы новичок в Camel, попробуйте начать с архетипа Maven, такого как camel-archetype-java, поскольку этот шаблонный материал настроен для вас.
Метод
configure()будет вызываться после добавленияRouteBuilderв контекст. Вызывается как часть методаContext#addRoutes.