59.2. 自动探测 Camel 路由

Camel CDI 会自动收集应用程序中的所有 RoutesBuilder Bean,实例化并在 CDI 容器初始化时将它们添加到 CamelContext bean 实例中。例如,添加 Camel 路由就像声明类一样简单,例如:

class MyRouteBean extends RouteBuilder {
 
    @Override
    public void configure() {
        from("jms:invoices").to("file:/invoices");
    }
}

请注意,您可以声明尽可能多的 RoutesBuilder Bean。另外,当容器初始化时,还会自动收集 RouteContainer beans、实例化并添加到 CamelContext bean 实例。

可作为 Camel 2.19 提供

在某些情况下,可能需要禁用 RouteBuilderRouteContainer Bean 的自动配置。这可以通过观察 CdiCamelConfiguration 事件来实现,例如:

static void configuration(@Observes CdiCamelConfiguration configuration) {
    configuration.autoConfigureRoutes(false);
}

同样,可以取消激活配置的 CamelContext Bean 自动开始,例如:

static void configuration(@Observes CdiCamelConfiguration configuration) {
    configuration.autoStartContexts(false);
}