6.2. camel-jms
有两种支持的方法将 camel-jms、camel-sjms 和 camel-sjms2 端点连接到远程 AMQ 7 代理。
- 使用 pooled-connection-factory 配置远程连接器,如"JBoss EAP 配置消息传递指南》中的"配置" Resource Adapter to Connect to Red Hat JBoss AMQ 7 一节中所述。
- 使用 connection-factory 配置远程连接器,如 使用 connection-factory 配置远程连接器
第一个选项是首选的方法,因为它提供连接池和 XA 事务支持。
对于使用持久订阅者的消息传递场景,由于 JavaEE 7 规格所施加的限制,JBoss EAP 上的 Fuse 7.11 不支持 pooled-connection-factory。在这种情况下,最好配置标准未池连接。
使用 connection-factory 配置远程连接器
创建一个指向远程消息传递服务器的出站套接字绑定:
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=messaging-remote-throughput:add(host=localhost, port=61616)
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=messaging-remote-throughput:add(host=localhost, port=61616)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建引用在第 1 步中创建的出站套接字绑定的远程连接器。
/subsystem=messaging-activemq/server=default/remote-connector=netty-remote-throughput:add(socket-binding=messaging-remote-throughput)
/subsystem=messaging-activemq/server=default/remote-connector=netty-remote-throughput:add(socket-binding=messaging-remote-throughput)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建连接因素,引用第 2 步中创建的远程连接器。
/subsystem=messaging-activemq/server=default/connection-factory=simple-remote-artemis-connection-factory:add(entries=[java:/jms/RemoteJms],connectors=[netty-remote-throughput])
/subsystem=messaging-activemq/server=default/connection-factory=simple-remote-artemis-connection-factory:add(entries=[java:/jms/RemoteJms],connectors=[netty-remote-throughput])
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.1. 消息传递代理和客户端 复制链接链接已复制到粘贴板!
摘要
Fuse 7.11 不提供默认的内部消息传递代理,但它旨在与外部 JMS 代理进行接口。
JBoss EAP 上的 Fuse 7.11 使用在 JBoss EAP 上配置消息传递 代理时详述的资源适配器。
有关 JBoss EAP 上 Fuse 7.11 上可用的外部代理、JCA 适配器和 Camel 组件组合的更多信息,请参阅支持的配置。https://access.redhat.com/articles/310603
有关使用 JMS 的 JBoss EAP 上 Fuse 连接到外部代理的更多信息,请参阅 第 6.2 节 “camel-jms”。
Camel-jms Quickstart
提供了快速入门,以演示在 JBoss EAP 上使用 Fuse 来制作和使用 JMS 消息的 camel-jms 组件。
在此快速入门中,Camel 路由会使用来自 EAP_HOME/standalone/data/orders
的文件,并将其内容放在名为 OrdersQueue
的内存中 ActiveMQ root 队列上。然后,另一个 Camel 路由消耗 OrdersQueue
的内容,并将订单排序为 EAP_HOME/standalone/data/orders/processed
中的各个国家目录。
CLI 命令创建和删除 OrdersQueue
CLI 脚本,以便在部署应用和取消部署时为您创建并移除 JMS OrdersQueue
。这些脚本位于 EAP_HOME/quickstarts/camel-jms/src/main/resources/cli
目录中。
先决条件
要运行此快速入门,您必须有一个 Fuse 7.11 工作版本
您还需遵循 使用 JBoss AMQ 进行远程 JMS 通信 中的说明,以连接到外部 AMQ 7 代理。然后您可以使用默认连接工厂注入连接工厂。
@Resource(mappedName = "java:jboss/RemoteJmsXA") ConnectionFactory connectionFactory;
@Resource(mappedName = "java:jboss/RemoteJmsXA")
ConnectionFactory connectionFactory;
设置快速入门
- 以单机模式启动 JBOSS EAP。
-
导航到
EAP_HOME/quickstarts/camel/camel-jms
-
输入
mvn clean install -Pdeploy'
以构建和部署 Quickstart。 - 浏览至 http://localhost:8080/example-camel-jms
您应该会看到一个名为"Orders Received"的页面。随着向示例应用程序发送订单,在此页中将列出每个国家每个国家的订单列表。
运行快速入门
EAP_HOME/quickstarts/camel-jms/src/main/resources
目录中有一些示例顺序 XML 文件。Camel 将每 5 秒随机选择一个文件,并将其复制到 EAP_HOME/standalone/data/orders
中进行处理。
控制台将输出信息详细描述了每个订购所发生的情况。输出将如下所示:
JmsConsumer[OrdersQueue]) Sending order to the UK JmsConsumer[OrdersQueue]) Sending order to another country JmsConsumer[OrdersQueue]) Sending order to the US
JmsConsumer[OrdersQueue]) Sending order to the UK
JmsConsumer[OrdersQueue]) Sending order to another country
JmsConsumer[OrdersQueue]) Sending order to the US
当文件被使用后,您可以返回到 http://localhost:8080/example-camel-jms/orders。每个国家的接收订单的数目应该已由 1 增加。
所有处理的订购将分成以下目的地:
EAP_HOME/standalone/data/orders/processed/uk EAP_HOME/standalone/data/orders/processed/us EAP_HOME/standalone/data/orders/processed/other
EAP_HOME/standalone/data/orders/processed/uk
EAP_HOME/standalone/data/orders/processed/us
EAP_HOME/standalone/data/orders/processed/other
取消部署
要取消部署示例,可导航到 EAP_HOME/quickstarts/camel/camel-jms
run mvn clean -Pdeploy
。