第 60 章 Camel CDI
Camel CDI 组件根据 约定配置,使用 CDI 作为依赖项注入框架为 Apache Camel 提供自动配置。它自动检测应用程序中提供的 Camel 路由,并为常见 Camel 原语提供 Bean,如 Endpoint
、FluentProducerTemplate
、ProducerTemplate
或 TypeConverter
。它实现了标准 Camel bean 集成,以便 @Consume
、@Produce
和 @PropertyInject
等 Camel 注解可以在 CDI Bean 中无缝使用。此外,它还将 Camel 事件(如 RouteAddedEvent
,CamelContextStartedEvent
,ExchangeCompletedEvent
, …)桥接为 CDI 事件,并提供 CDI 事件端点,可用于使用 / 到 Camel 路由中的 CDI 事件。
虽然 Camel CDI 组件自 Camel 2.10 开始可用,但在 Camel 2.17 中已重写了它,以更好地适应 CDI 编程模型。因此,Camel 事件到 CDI 事件网桥的一些功能,CDI 事件端点仅应用从 Camel 2.17 开始。
Camel CDI 测试中提供了有关如何测试 Camel CDI 应用程序的更多详细信息。
camel-cdi 在 OSGi 中弃用,不支持。如果使用带有 OSGi 的 Camel,则使用 OSGi 蓝图。
60.1. 自动配置的 Camel 上下文
Camel CDI 会自动部署和配置 CamelContext
bean。当 CDI 容器初始化(重新启动)时,该 CamelContext
bean 会自动实例化、配置和启动(停止)。它可以在应用程序中注入,例如:
@Inject CamelContext context;
默认 CamelContext
bean 符合内置的 @Default
qualifier,其范围为 @ApplicationScoped
,类型为 DefaultCamelContext
。
请注意,此 bean 可以以编程方式自定义,也可以将其他 Camel 上下文 Bean 部署到应用程序中。