60.11. Camel XML 配置导入


从 Camel 2.18 开始提供

虽然 CDI 优先选择 typesafe 依赖项注入机制,但在 Camel CDI 应用程序中重复使用现有 Camel XML 配置文件可能会很有用。 在其他用例中,可能需要依赖 Camel XML DSL 来配置其 Camel 上下文。

您可以使用任意 CDI Bean 和 Camel CDI 上 Camel CDI 提供的 @ImportResource 注释,该注释将在指定位置(例如:

@ImportResource("camel-context.xml")
class MyBean {
}
Copy to Clipboard Toggle word wrap

Camel CDI 将从 classpath 中加载指定位置的资源(以后可能会添加其他协议)。

每个 CamelContext 元素和其他来自导入的资源的 Camel 原语 都会在容器 bootstrap 期间自动部署为 CDI Bean,以便它们从 Camel CDI 提供的自动配置中受益,并在运行时注入。如果此类元素设置了显式 id 属性,则对应的 CDI bean 将与 @Named qualifier 限定,例如,给定以下 Camel XML 配置:

<camelContext id="foo">
    <endpoint id="bar" uri="seda:inbound">
        <property key="queue" value="#queue"/>
        <property key="concurrentConsumers" value="10"/>
    </endpoint>
<camelContext/>
Copy to Clipboard Toggle word wrap

对应的 CDI Bean 会自动部署,并可注入,例如:

@Inject
@ContextName("foo")
CamelContext context;

@Inject
@Named("bar")
Endpoint endpoint;
Copy to Clipboard Toggle word wrap

请注意, Camel Context Bean 会自动使用 @Named 和 @ContextName qualifiers 进行合格。如果导入的 CamelContext 元素没有 id 属性,则使用内置的 @Default qualifier 部署对应的 bean。

相反,应用程序中部署的 CDI Bean 可以从 Camel XML 配置中引用,通常使用 ref 属性,例如声明了以下 bean:

@Produces
@Named("baz")
Processor processor = exchange -> exchange.getIn().setHeader("qux", "quux");
Copy to Clipboard Toggle word wrap

可以在导入的 Camel XML 配置中声明对 bean 的引用,例如:

<camelContext id="foo">
    <route>
        <from uri="..."/>
        <process ref="baz"/>
    </route>
<camelContext/>
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat