java - Apache Camel RouteBuilder 不启动 configure()

标签 java apache-camel

当我尝试在 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/

相关文章:

java - maven - 指定 java 编译器颠覆

java - 带有关联表达式的 Camel 聚合器

java - org.apache.camel.InvalidPayloadException:没有可用类型为java.io.InputStream的主体,但具有值:在解码绑定(bind)bean时抛出

java - 如何正确记录 Camel 中的消息/路由(流)?

apache-camel - 如何防止来自Camel "expected resource not found"组件的java邮件 "smtp"警告?

java - Swing DefaultStyledDocument 遍历

java - 非法参数异常 : XXX is not part of the schema for this Realm

java - 使用剪辑无法在Java中播放声音

interface - 有没有类似于 Callable<V> 但不抛出已检查异常的标准 JDK 接口(interface)?

java - 调用http组件时 Camel 线程ID发生变化