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 组件

您可以使用 Java 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. 从 Endpoint URI 引用 Bean

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

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

将以下 CDI Bean 符合 @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.