第 6 章 Camel 组件
本章详细介绍了支持的 camel 组件信息
6.1. camel-activemq 复制链接链接已复制到粘贴板!
Camel ActiveMQ 集成由 activemq 组件提供。
组件可以配置为处理嵌入式或外部代理。对于 Wildfly / EAP 容器管理的连接池和 XA-Transaction 支持,可以将 ActiveMQ 资源适配器 配置为容器配置文件。
6.1.1. JBoss EAP ActiveMQ 资源适配器配置 复制链接链接已复制到粘贴板!
下载 ActiveMQ 资源适配器 rar 文件。以下步骤概述了如何配置 ActiveMQ 资源适配器。
- 停止您的 JBoss EAP 实例。
下载资源适配器并将 复制到相关的 JBoss EAP 部署目录。对于独立模式:
cp activemq-rar-5.11.1.rar ${JBOSS_HOME}/standalone/deployments/activemq-rar.rar
cp activemq-rar-5.11.1.rar ${JBOSS_HOME}/standalone/deployments/activemq-rar.rar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为 ActiveMQ 适配器配置 JBoss EAP 资源适配器子系统。
如果您的资源适配器存档文件名与 located-rar.rar 不同,您必须更改上述配置中 archive 元素的内容以匹配存档文件的名称。
必须选择 UserName 和 Password 配置属性的值以匹配外部代理中有效用户的凭证。
您可能需要更改 ServerUrl 配置属性的值,以匹配外部代理公开的实际主机名和端口。
4) 启动 JBoss EAP。如果一切配置正确,您应该可以看到 JBoss EAP server.log 中的消息,如下所示:
13:16:08,412 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-5) JBAS010406: Registered connection factory java:/AMQConnectionFactory`
13:16:08,412 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-5) JBAS010406: Registered connection factory java:/AMQConnectionFactory`
6.1.2. Camel 路由配置 复制链接链接已复制到粘贴板!
以下 ActiveMQ producer 和使用者示例利用 ActiveMQ 嵌入式代理和"vm' 传输(避免对外部 ActiveMQ 代理的需求)。
示例将 CDI 与 camel-cdi 组件结合使用。JMS ConnectionFactory 实例通过 JNDI 查找注入到 Camel RouteBuilder 中。
6.1.2.1. ActiveMQ Producer 复制链接链接已复制到粘贴板!
每次将消息添加到 WildFlyCamelQueue 目的地时,都将向控制台输出日志消息。要验证消息实际上是否已放置到队列中,您可以使用由 Camel on EAP 子系统提供的 ../features/hawtio.md[Hawtio 控制台、window=_THREE]。
6.1.2.2. ActiveMQ Consumer 复制链接链接已复制到粘贴板!
若要利用 ActiveMQ 消息,Camel RouteBuilder 实施与制作者示例类似。
当 ActiveMQ 端点消耗来自 WildFlyCamelQueue 目的地的消息时,内容将记录到控制台。
@Override public void configure() throws Exception { from("activemq:queue:WildFlyCamelQueue?brokerURL=vm://localhost") .to("log:jms?showAll=true"); }
@Override
public void configure() throws Exception {
from("activemq:queue:WildFlyCamelQueue?brokerURL=vm://localhost")
.to("log:jms?showAll=true");
}
6.1.2.3. ActiveMQ 事务 复制链接链接已复制到粘贴板!
6.1.2.3.1. ActiveMQ 资源适配器配置 复制链接链接已复制到粘贴板!
需要 ActiveMQ 资源适配器以利用 XA 事务支持、连接池等。
以下 XML 片段演示了如何在 JBoss EAP 服务器 XML 配置中配置资源适配器。请注意 ,serverURL
设置为使用嵌入式代理。连接工厂与 JNDI 名称 java:/ActiveMQConnectionFactory
绑定。这将在 RouteBuilder 示例中查找。
最后,两个队列配置为名为 'queue1' 和 'queue2'。
6.1.2.4. 事务管理器 复制链接链接已复制到粘贴板!
camel-activemq 组件需要类型为 org.springframework.transaction.PlatformTransactionManager
的事务管理器。因此,您可以首先创建一个满足此要求的 bean 扩展 JtaTransactionManager
。请注意,an 标注了 @Named
,以便 bean 在 Camel Bean 注册表中注册。另请注意,JBoss EAP 事务管理器和用户事务实例使用 CDI 注入。
6.1.2.5. 事务策略 复制链接链接已复制到粘贴板!
接下来,您需要声明要使用的事务策略。再次使用 @Named
注释,使 bean 可供 Camel 使用。事务管理器也注入,以便可使用所需的事务策略创建 TransactionTemplate
。本例中为 PROPAGATION_REQUIRED
。
6.1.2.6. 路由构建器 复制链接链接已复制到粘贴板!
现在,您可以配置 Camel RouteBuilder 类,并注入 Camel ActiveMQ 组件所需的依赖项。您在资源适配器配置上配置的 ActiveMQ 连接工厂会与您之前配置的事务管理器一起注入。
在本示例 RouteBuilder 中,每当来自 queue1 的消息被使用时,它们都会路由到名为 queue2 的其他 JMS 队列。来自 queue2 的消息会使用 rollback()DSL 方法回滚 JMS 事务。这将导致原始消息放置在死信队列(DLQ)上。
6.1.3. 安全性 复制链接链接已复制到粘贴板!
请参阅 JMS 安全部分。
6.1.4. GitHub 上的代码示例 复制链接链接已复制到粘贴板!
GitHub 上提供了 camel-activemq 应用程序 的示例。