有时有必要将不同的Message Broker连接在一起。 在企业消息传递中,此方案称为桥接。 可以使用JMS和其他协议(例如AMQP,ActiveMQ Artemis核心协议)来完成。 该博客文章重点介绍在WildFly中运行的JMS与两个Apache ActiveMQ Artemis Brokers的桥接。
什么是JMS桥?
JMS桥通常用于连接不同代理或服务器上的队列和主题。 桥将消息从源转发到目标代理,而两个代理不必位于同一群集中。
这使得桥接适合于将消息从一个群集可靠地发送到另一个群集(例如,通过WAN),并且连接可能不可靠。 它也可以像HiveMQ一样用于Message Broker的水平扩展。
横向桥接方案
有两种不同的部署方案。 在此博客文章中,我将使用源代理在WildFly中配置网桥。 也可以在两个Broker的中间使用一个额外的ActiveMQ Broker作为Bridge。
上图显示了我们要配置的方案。 如您所见,我们需要在源Broker上配置一个队列,在目标Broker上配置一个队列,并且需要一些配置以连接这两个队列。
注意:我没有找到更好的设备图像。 因此,我选择了iPhone图像。 随意可视化其他内容;-)
配置源代理
第一步,您必须为源和目标分别下载和解压缩WildFly服务器两次,如上图所示。
在下一步中,您必须配置源WildFly的standalone-full.xml ,该文件位于WildFly的standalone / configuration文件夹中。
打开XML文件后,您必须通过将以下代码段添加到standalone-full.xml中,来将Source Queue添加到Source Broker中:
此代码片段创建一个名为JMSBridgeSourceQueue的新JMS队列。 在下一步中,您必须配置网桥。 桥具有许多配置选项,例如最大批处理时间,最大重试次数等。 这不是本文的一部分。
要启动和运行网桥的下一个更重要的配置是指向先前创建的jms-queue的源标记和包含目标代理的目标队列的配置的目标标记。
如您所见,目标代理需要身份验证,因此需要在目标代理上创建应用程序用户。
配置目标代理
配置源代理后,必须配置目标代理。 如前所述,JMS Bridge需要一个应用程序用户,该应用程序用户必须添加到目标代理中,并在源代理standalone-full.xml文件中引用。
可以使用
位于以下位置的add-user.sh脚本
bin文件夹。
在最后一步中,您还必须配置目标代理的standalone-full.xml文件。
您必须创建一个与soure Brokers Bridge配置的目标名称相同的JMS队列。 而已。 在最后一步中,您可以启动两个服务器并检查日志文件。 如果两个WildFlies都成功启动且没有任何错误,则表明Bridge已启动并正在运行。
启动经纪人
./standalone.sh -Djboss.socket.binding.port-offset=100 -c standalone-full.xml
./standalone.sh -c standalone-full.xml
结论
可以使用许多属性来配置JMS Bridge。 服务质量,最大批处理时间和最大批处理大小的最大重试次数以及失败重试间隔时间。
玩转您的JMS Bridge!
翻译自: https://www.javacodegeeks.com/2016/11/building-horizontal-jms-bridge-two-wildfly-servers-using-activemq-artemis.html