当我尝试在 Apache Camel 中配置新的直接端点时,RouteBuilder 的 configure() 方法未启动,我无法找出原因。
我有一个方法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 中。目前它返回一个空路由,因为配置()方法被跳过。不幸的是,没有抛出异常或任何其他类型的错误消息。
最佳答案
要让 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 原型(prototype)开始,例如 camel-archetype-java
,因为这个样板内容已经为您设置好了。
关于java - Apache Camel RouteBuilder 不启动 configure(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50425484/