【问题标题】:Apache Camel RouteBuilder does not launch configure()Apache Camel RouteBuilder 不启动 configure()
【发布时间】:2018-05-19 12:50:39
【问题描述】:

当我尝试在 Apache Camel 中配置新的直接端点时,我的 RouteBuilder 的 configure()-Method 没有启动,我无法找出原因。

我有一个方法 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() 方法被跳过。不幸的是,没有抛出异常或任何其他类型的错误消息。

【问题讨论】:

  • configure() 方法将在 RouteBuilder 添加到上下文后被调用。它被称为方法Context#addRoutes 的一部分。

标签: java apache-camel


【解决方案1】:

要让 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,因为这个样板文件已经为您设置好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多