60.8. Camel bean 集成


60.8.1. Camel 注解

作为 Camel bean 集成 的一部分,Camel 附带了一组由 Camel CDI 无缝支持 的注解。因此,您可以在 CDI Bean 中使用这些注解,例如:

 Camel 注解对等的 CDI

配置属性

@PropertyInject("key")
String value;

如果使用 DeltaSpike 配置机制

@Inject
@ConfigProperty(name = "key")
String value;

如需了解更多详细信息,请参阅 配置属性。

生产者模板注入(默认 Camel 上下文)

@Produce(uri = "mock:outbound")
ProducerTemplate producer;

@Produce(uri = "mock:outbound")
FluentProducerTemplate producer;
@Inject
@Uri("direct:outbound")
ProducerTemplate producer;

@Produce(uri = "direct:outbound")
FluentProducerTemplate producer;

端点注入(默认 Camel 上下文)

@EndpointInject(uri = "direct:inbound")
Endpoint endpoint;
@Inject
@Uri("direct:inbound")
Endpoint endpoint;

端点注入(按名称的Camel 上下文)

@EndpointInject(uri = "direct:inbound",
                context = "foo")
Endpoint contextEndpoint;
@Inject
@ContextName("foo")
@Uri("direct:inbound")
Endpoint contextEndpoint;

Bean 注入(按类型)

@BeanInject
MyBean bean;
@Inject
MyBean bean;

Bean 注入(按名称)

@BeanInject("foo")
MyBean bean;
@Inject
@Named("foo")
MyBean bean;

POJO 消耗

@Consume(uri = "seda:inbound")
void consume(@Body String body) {
    //...
}
 

60.8.2. Bean 组件

您可以在 Camel DSL 中按类型或名称引用 CDI Bean,例如使用 Java Camel DSL:

class MyBean {
    //...
}

from("direct:inbound").bean(MyBean.class);

或者按名称从 Java DSL 查找 CDI bean:

@Named("foo")
class MyNamedBean {
    //...
}

from("direct:inbound").bean("foo");

60.8.3. 从端点 URI 引用 Bean

当使用 URI 语法配置端点时,您可以使用 # 表示法引用 Registry 中的 Bean。如果 URI 参数值以 # 符号开头,则 Camel CDI 将按名称查找给定类型的 bean,例如:

from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");

具有以下 CDI bean qualified with @Named ("jtaTransactionManager"):

@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager transactionManager, UserTransaction userTransaction) {
    JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
    jtaTransactionManager.setUserTransaction(userTransaction);
    jtaTransactionManager.setTransactionManager(transactionManager);
    jtaTransactionManager.afterPropertiesSet();
    return jtaTransactionManager;
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.