在本文中,我们将学习如何将QPID调度路由器或互连集成到AMQ 7或ApacheActivemqArtemis中。我们将了解连接到AMQ 7代理的互连的基本路由器配置。互连也称为ApacheQPID调度路由器或简单的调度路由器。
我们有一个码头工人QPID调度路由器图像。此Docker映像仅用于测试路由器配置。QPID调度路由器是作为一组rpms提供的,安装起来可能比较困难。我不建议在生产环境中使用这个Docker形象,因为它还没有企业准备好。然而,应该有一种方法,开发人员和QE团队可以测试路由器配置,而不深入安装过程。它也不应该是特定于操作系统的。使用Docker映像,您可以在几秒钟内直接旋转具有不同路由器配置的多个路由器容器。而且,它与操作系统无关。我可以使用Ubuntu或CentOS、Fedora或其他Linux版本运行此Dispatch路由器,而无需安装任何软件,这可能会给初学者带来麻烦。
我们使用Dispatch路由器的一个主要好处是,与代理的连接较少。客户端只使用AMQP协议与调度路由器通信,客户端不知道只与代理通信。因此,与代理的连接较少。此外,调度路由器提供高可用性,这意味着如果我们有多个调度路由器连接在一个拓扑,即使其中一个调度路由器是关闭的,另一个调度路由器将继续处理流量。
下面是连接到AMQ 7代理的独立调度路由器应该遵循的步骤。
建立并启动AMQ 7
我们可以下载和安装AMQ 7或ApacheActiveMQ Artemis. Here, make sure that amqp port of AMQ7 broker instance is different than Dispatch Router. I changed the AMQ7 instance amqp port to 5673 so that it doesn't conflict with amqp port of Dispatch Router. It can be changed within AMQ7_Instance/etc/broker.xml
创建和建立码头形象
(A)让我们在以下基础上创建一个码头形象CEPOTA/QDR码头形象。我将这个docker文件命名为DockerFile_QDR。我们还在安装sasl-平原插件,这样我们就可以通过普通凭证从路由器访问AMQ 7代理。
FROM ceposta/qdr
RUN yum -y install cyrus-sasl-plain
b)从Docker文件生成Docker映像。
docker build -t qdr/saslplain -f ./DockerFile_QDR .
设置路由器配置
您可以在以下位置找到完整的路由器配置:我个人的GitHub链接。
此文件中的重要部分是路由器、地址、侦听器、连接器。更多细节这里.
<strong>router</strong>: Attribute mode is set to standalone, which means it acts as a single node and doesn't cooperate with other routers.
<strong>address</strong>: Here foo is the address or destination.
<strong>listener</strong>: Router accepts amqp messages on port 5672.
<strong>autolink</strong>: Here dir with value In means into the router, out means out of the router. Also, addr is set as foo.
<strong>connector</strong>: Configuration here connect router to broker. We have set saslMechanisms as plain so that user can be authenticated in broker.
使用路由器配置运行Docker映像
下面是我们使用鈥�Net=“host”的几个要点,以便Docker容器能够看到AMQ 7在主机上运行。其次,我们正在将路由器安装到Broker.conf,即路由器配置。
docker run --net="host" -it --rm --name qdr -p 5672:5672 -v /home/chandrashekhar/Development/DockerFiles/qpid-proton/router-to-broker.conf:/etc/qpid-dispatch/qdrouterd.conf qdr/saslplain
向调度路由器发送AMQP消息并检查AMQ 7代理中的统计信息
借助AMQ 7的bin文件夹或Artemis Broker实例中可用的AMQ 7脚本,我们可以生成和浏览消息。在这里,我们可以发现消息被发送到Dispatch路由器,即URL tcp:/localhost:5672,协议设置为AMQP。但是,我们正在浏览AMQ 7上的消息,监听61616端口。
./artemis producer --url tcp://localhost:5672 --message-count 1 --destination foo --protocol amqp --text-size 50
./artemis browser --url tcp://localhost:61616 --user admin --password admin --destination foo
ApacheQPID调度路由器统计分析
有一个与qdstat命令不同的开关来查看路由器统计信息。
-c,-连接显示连接
-L,-链接显示路由器链接
-n,-节点显示路由器
-A,-地址显示路由器地址
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e32798a88ee9 qdr/saslplain "/usr/sbin/qdrouterd鈥�" 2 minutes ago Up 2 minutes
$ docker exec e32798a88ee9 qdstat -c
$ docker exec e32798a88ee9 qdstat -l
$ docker exec e32798a88ee9 qdstat -a
就这样我相信本文将帮助您从ApacheQPID调度路由器开始。在下一篇文章中,我们将建立多个ApacheQPID调度路由器,以提供AMQ 7的高可用性。