1.单机部署
我们在Centos7虚拟机中使用Docker来安装。
1.1.下载镜像
1.2.安装MQ
执行下面的命令来运行MQ容器:
启动后即可验证:http://192.168.206.128:15672/#/
2.安装DelayExchange插件
官方的安装指南地址为:官方地址。上述文档是基于linux原生安装RabbitMQ,然后安装插件。
因为我们之前是基于Docker安装RabbitMQ,所以下面我们会讲解基于Docker来安装RabbitMQ插件。
2.1.下载插件
RabbitMQ官方的插件社区地址:链接,其中包含各种各样的插件,包括我们使用的DelayExchange插件:
RABBITMQ.DELAYED.MESSAGE_EXCHANGE
A PLUGIN THAT ADDS DELAYED-MESSAGING (OR SCHEDULED-MESSAGING)TO RABBITMO.
DOWNLOAD FOR 3.7
R.7X AND 3.8.X
AUTHOR:ALVARO VIDELA
GITHUB:RABBITMG/RABBITMG-DELAYED-MESSAGE-EXCHANGE
读者朋友们可以去对应的GitHub页面下载3.8.9版本的插件,地址为:插件地址,这个对应RabbitMQ的3.8.5以上版本。这里我也提供了下载好的插件:
ASSETS
MQ-ADVANCED-DEMO
RABBITMQ DELAYED MESSAGE EXCHANGE-3.8.9-0199D11C.EZ
RABBITMQ部署指南.MD
2.2.上传插件
因为我们是基于Docker安装,所以需要先查看RabbitMQ的插件目录对应的数据卷。如果不是基于Docker的读者朋友们,请参考第一章部分,重新创建Docker容器。
我们之前设定的RabbitMQ的数据卷名称为mq-plugins,所以我们使用下面命令查看数据卷:
可以得到下面结果:
[ROOT@LOCALHOST ~]# DOCKE
: DOCKER VOLUME INSPECT MQ-PLUGINS
"CREATEDAT": "2021-07-12T21:44:26+08:00",
"DRIVER": "LOCAL",
"LABELS": NULL,
DATA
LUGINS/
"MOUNTPOINT":
"/VAR/LIB/DOCKER/VOLUMES/MQ-PLUG
"NAME":
PLUGINS"
LD-BM,
"OPTIONS
NULL,
"SCOPE": "LOCAL"
接下来,将插件上传到这个目录即可:
/VAR/LIB/DOCKER/VOLUMES/MG-PLUGINS/_DATA/
SIZE(KB)
NAME
RABBITMG_AWS-3.8.5.EZ
60
RABBITMQ_CONSISTENT_HASH_EXCHANGE-3.8.5.EZ
34
RABBITMQ_DELAYED_MESSAGE_EXCHANGE-3.8.9-0199D11C.EZ
49
2.3.安装插件
最后就是安装了,需要进入MQ容器内部来执行安装。我的容器名为mq,所以执行下面命令:
执行时,请将其中的 -it 后面的mq替换为你自己的容器名。进入容器内部后,执行下面命令开启插件:
结果如下:
ROOT@MQ1://# RABBITMQ-PLUGINS 6
LUGINS ENABLE RABBITMQ_DELAYED_M
ED_MESSAGE_EXCHANGE
RABBIT@MQ1:
ENABLING PLUGINS ON NODE
RABBITMQ_DELAYED_MESSAGE_EXCHANGE
THE FOLLOWING PLUGINS HAVE BEEN
CONFIGURED:
RABBITMQ_DELAYED_M
AYED_MESSAGE_EXCHANGE
RABBITMQ_MANAGEMENT
RABBITMQ_MANAGEMENT_AGENT
RABBITMQ_WEB_DISPATCH
APPLYING PLUGIN CONFIGURATION TO RABBITEMQ1...
THE FOLLOWING PLUGINS
S HAVE BEEN ENABLED:
RABBITMQ_DELAYED_MESSAGE EXCHANGE
STARTED 1 PLUGINS.
3.集群部署
3.1.集群分类
在RabbitMQ的官方文档中,讲述了两种集群的配置方式:
●普通模式:普通模式集群不进行数据同步,每个MQ都有自己的队列、数据信息(其它元数据信息如交换机等会同步)。例如我们有2个MQ:mq1,和mq2,如果你的消息在mq1,而你连接到了mq2,那么mq2会去mq1拉取消息,然后返回给你。如果mq1宕机,消息就会丢失。
●镜像模式:与普通模式不同,队列会在各个mq的镜像节点之间同步,因此你连接到任何一个镜像节点,均可获取到消息。而且如果一个节点宕机,并不会导致数据丢失。不过,这种方式增加了数据同步的带宽消耗。
我们先来看普通模式集群,我们的计划部署3节点的mq集群:
主机名 |
控制台端口 |
amqp通信端口 |
mq1 |
8081 ---> 15672 |
8071 ---> 5672 |
mq2 |
8082 ---> 15672 |
8072 ---> 5672 |
mq3 |
8083 ---> 15672 |
8073 ---> 5672 |
集群中的节点标示默认都是:rabbit@[hostname],因此以上三个节点的名称分别为:
●rabbit@mq1
●rabbit@mq2
●rabbit@mq3
3.2.获取cookie
RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。集群模式中的每个RabbitMQ 节点使用 cookie 来确定它们是否被允许相互通信。要使两个节点能够通信,它们必须具有相同的共享秘密,称为Erlang cookie。cookie 只是一串最多 255 个字符的字母数字字符。
每个集群节点必须具有相同的 cookie。实例之间也需要它来相互通信。我们先在之前启动的mq容器中获取一个cookie值,作为集群的cookie。执行下面的命令:
可以看到cookie值如下:
也可到指定容器下去查找,路径:/var/lib/docker/volumes/最新数据/_data/.erlang.cookie
接下来,停止并删除当前的mq容器,我们重新搭建集群。
3.3.准备集群配置
在/tmp目录新建一个配置文件 rabbitmq.conf:
文件内容如下:
再创建一个文件,记录cookie
准备三个目录,mq1、mq2、mq3:
然后拷贝rabbitmq.conf、cookie文件到mq1、mq2、mq3:
3.4.启动集群
创建一个网络,用作集群间通信:
运行命令
3.5.测试
在mq1这个节点上添加一个队列:
EXCHANGES
CHANNELS
CONNECTIONS
ADMIN
OVERVIEW
QUEUES
QUEUES
ALL QUEUES(0)
NO QUEUES ..
ADD A NEW QUEUE
CLASSIC
队列名称
TYPE:
SIMPLE.QUEUE
NAME:
DURABLE
DURABILITY:
队列所在街道,是RABBIT@MQ1
RABBIT@MG1
NODE:
NO
AUTO DELETE:
STRING
ARGUMENTS:
ADD
MAX LENGTH BYTES
OVERFLOW BEHAVIOUR
?
MESSAGE TTL
AUTO EXPIRE
MAX LENGTH
MAXIMUM PRIORITY
DEAD LETTER ROUTING KEY
?
SINGLE ACTIVE
DEAD LETTER EXCHANGE
CONSUMER
?
MASTER LOCATOR
LAZY MODE
ADD QUEUE
如图,在mq2和mq3两个控制台也都能看到:
QUEUES
ALL QUEUES (1)
PAGINATION
OF 1 - FILTER:
REGEX
V
PAGE
MESSAGE RA
OVERVIEW
MESSAGES
UNACKED
INCOMING
NODE
STATE
NAME
TYPE
TOTAL
FEATURES
READY
SIMPLE.QUEUE
RABBIT@MQ1
IDLE
0
CLASSIC
0
D
0
ARGS
3.5.1.数据共享测试
点击这个队列,进入管理页面:
QUEUES
ALL QUEUES(1)
PAGINATION
1
OF 1 - FILTER:
PAGE
REGEX
MESSAGES
OVERVIEW
READY
UNACKED
STATE
NAME
TYPE
NODE
FEATURES
TOTAL
0
RABBIT@MQ1
CLASSIC
0
IDLE
SIMPLE.GUEUEL
ARGS
然后利用控制台发送一条消息到这个队列:
QUEUE SIMPLE.QUEUE
OVERVIEW
CONSUMERS
BINDINGS
PUBLISH MESSAGE
MESSAGE WILL BE PUBLSHED TO THE DEFAULT EXCHANGE WITH ROUTING KEY SIMPLE.GUEUE, ROUTING IT TO QUEUE;
2-PERSISTENT
DELIVERY MODE:
STRING
HEADERS:
PROPERTIES:
HE 110,
MQ1!
PAYLOAD:
PUBLISH MESSAGE
结果在mq2、mq3上都能看到这条消息:
:8083
192.168.150.101
#/QUEUES
不安全
BRABBITMO
ERLANG 24.0.3
RABBITMQ 3.8.19
TM
ADMIN
CHANNELS
EXCHANGES
OVERVIEW
CONNECTIONS
QUEUES
UEUES
ALL QUES(1)
+/-
MESSAGE RATES
MESSAGES
OVERVIEW
NLAMG
DELIVER/GETACK
INCOMING
0.00/S
0.00/S
0.00/S
SIMPLE.QUEUE
CLASSIC
RABBIT@MG1
IDLE
ARGS
3.5.2.可用性测试
我们让其中一台节点mq1宕机:
然后登录mq2或mq3的控制台,发现simple.queue也不可用了:
192.168.150.101:8083/#/QUEUES
不安全
BRABBITMO
RABBITMO 3.8.19
ERLANG 24.0.3
TM
ADMIN
OVERVIEW
EXCHANGES
CHANNELS
CONNECTIONS
QUEUES
QUEUES
ALL QUEUES(1)
+/-
MESSAGE RATES
MESSAGES
OVERVIEW
INCOMING DELIVER/GET ACK
TOTAL
NODE
TYPE
FEATURES
NAME
UNACKED
READY
STATE
SIMPLE.QUEUE
NAN
NAN
CLASSIC
NAN
RABBIT@MG1
DOWN
D
ARGS
说明数据并没有拷贝到mq2、mq3。显然在生产环境下是不可以的,那么如何更好的做集群设计和优化呢?
4.镜像模式
在刚刚的案例中,一旦创建队列的主机宕机,队列就会不可用。不具备高可用能力。如果要解决这个问题,必须使用官方提供的镜像集群方案。官方文档地址:https://www.rabbitmq.com/ha.html
4.1.镜像模式的特征
默认情况下,队列只保存在创建该队列的节点上。而镜像模式下,创建队列的节点被称为该队列的主节点,队列还会拷贝到集群中的其它节点,也叫做该队列的镜像节点。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。甚至,一个队列的主节点可能是另一个队列的镜像节点。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。镜像节点仅仅起到备份数据作用。当主节点接收到消费者的ACK时,所有镜像都会删除节点中的数据。
总结如下:
●镜像队列结构是一主多从(从就是镜像)
●所有操作都是主节点完成,然后同步给镜像节点
●主宕机后,镜像节点会替代成新的主(如果在主从同步完成前,主就已经宕机,可能出现数据丢失)
●不具备负载均衡功能,因为所有操作都会有主节点完成(但是不同队列,其主节点可以不同,可以利用这个提高吞吐量)
4.2.镜像模式的配置
镜像模式的配置有3种模式:
ha-mode |
ha-params |
效果 |
准确模式exactly |
队列的副本量count |
集群中队列副本(主服务器和镜像服务器之和)的数量。count如果为1意味着单个副本:即队列主节点。count值为2表示2个副本:1个队列主和1个队列镜像。换句话说:count = 镜像数量 + 1。如果群集中的节点数少于count,则该队列将镜像到所有节点。如果有集群总数大于count+1,并且包含镜像的节点出现故障,则将在另一个节点上创建一个新的镜像。 |
all |
(none) |
队列在群集中的所有节点之间进行镜像。队列将镜像到任何新加入的节点。镜像到所有节点将对所有群集节点施加额外的压力,包括网络I / O,磁盘I / O和磁盘空间使用情况。推荐使用exactly,设置副本数为(N / 2 +1)。 |
nodes |
node names |
指定队列创建到哪些节点,如果指定的节点全部不存在,则会出现异常。如果指定的节点在集群中存在,但是暂时不可用,会创建节点到当前客户端连接到的节点。 |
这里我们以rabbitmqctl命令作为案例来讲解配置语法。
4.2.1.exactly模式
●rabbitmqctl set_policy:固定写法
●ha-two:策略名称,自定义
●"^two\.":匹配队列的正则表达式,符合命名规则的队列才生效,这里是任何以two.开头的队列名称
●'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}': 策略内容
○"ha-mode":"exactly":策略模式,此处是exactly模式,指定副本数量
○"ha-params":2:策略参数,这里是2,就是副本数量为2,1主1镜像
○"ha-sync-mode":"automatic":同步策略,默认是manual,即新加入的镜像节点不会同步旧的消息。如果设置为automatic,则新加入的镜像节点会把主节点中所有消息都同步,会带来额外的网络开销
4.2.2.all模式
●ha-all:策略名称,自定义
●"^all\.":匹配所有以all.开头的队列名
●'{"ha-mode":"all"}':策略内容
○"ha-mode":"all":策略模式,此处是all模式,即所有节点都会称为镜像节点
4.2.3.nodes模式
●rabbitmqctl set_policy:固定写法
●ha-nodes:策略名称,自定义
●"^nodes\.":匹配队列的正则表达式,符合命名规则的队列才生效,这里是任何以nodes.开头的队列名称
●'{"ha-mode":"nodes","ha-params":["rabbit@nodeA", "rabbit@nodeB"]}': 策略内容
○"ha-mode":"nodes":策略模式,此处是nodes模式
○"ha-params":["rabbit@mq1", "rabbit@mq2"]:策略参数,这里指定副本所在节点名称
4.3.测试
我们使用exactly模式的镜像,因为集群节点数量为3,因此镜像数量就设置为2。运行下面的命令(任一节点均可,这里以mq1为例),进入控制台:
下面,我们创建一个新的队列:
ADD A NEW QUEUE
CLASSIC
TYPE:
队列名称,这里一定要以TWO.开头,因为我们设置的正则表达式是匹配
TWO.
TWO.QUEUE
NAME:
DURABLE
DURABILITY:
队列的主节点是MQ1
RABBIT@MG1
NODE:
NO
AUTO DELETE:
STRING
ARGUMENTS:
ADD MESSAGE TTL ?
OVERFLOW BEHAVIOUR
MAX LENGTH BYTES
MAX LENGTH
AUTO EXPIRE
DEAD LETTER ROUTING KEY ? I SINGLE ACTIVE CONSUMER
DEAD LETTER EXCHANGE
MAXIMUM PRIORITY
MASTER LOCATOR
LAZY MODE
新增
ADD QUEUE
在任意一个mq控制台查看队列:
图片加载失败
192.168.150.101:8082/
不安全
QUEUES
BRABBITMQ
ERLANG 24.0.3
RABBITMO 3.8.19
TM
CONNECTIONS
CHANNELS
EXCHANGES
OVERVIEW
ADMIN
QUEUES
QUEUES
ALL QUEUES(2)
MESSAGE RATES
MESSAGES
OVERVIEW
INCOMINGDELIVER/GETACK
READY
FEATURES
UNACKED
STATE
NODE
TOTAL
TYPE
NAME
IDLE
CLASSIC
D ARGS
SIMPLE.QUEUE RABBIT@MQ
CLASSIC
RUNNING
TWO.QUEUE
HA-TWO
RABBIT@MG1 +1
ARGS
4.3.1.测试数据共享
注意:下面的发消息,需要点击图示:+1 ,查看对应的从节点是哪个再去操作,这里我的是mq2
CHANNELS
OVERVIEW
ADMIN
CONNECTIONS
EXCHANGES
QUEUES
QUEUES
ALL QUEUES(2)
MESSAGE RATES
MESSAGES
OVERVIEW
UNACKED
READY
DELIVER/GET
TOTAL
STATE
ACK
TYPE
NODE
INCOMING
FEATURES
NAME
IDLE
CLASSIC
0
SIMPLE.QUEUE RABBIT@MQ1
D
ARGS
IDLE
0
0
CLASSIC
TWO.QUEUE
RABBIT@MG1+1
ARGS
HA-TWO
给two.queue发送一条消息:
OVERVIEW
CHANNELS
ADMIN
EXCHANGES
CONNECTIONS
QUEUES
QUEUE
TWO.QUEUE
OVERVIEW
CONSUMERS
BINDINGS
PUBLISH MESSAGE
MESSAGE WILL BE PUBLSHED TO THE DEFAULT EXCHANGE WITH ROUTING KEY TWO.QUEUE, ROUTING IT TO THIS QUE
2 - PERSISTENT
DELIVERY MODE:
STRING
HEADERS:
PROPERTIES:
EVERYONE!
PAYLOAD:
PUBLISH MESSAGE
然后在mq1、mq2、mq3的任意控制台查看消息:
1:8083/#/QUEUES/%2F/TWO.QUEUE
192.168.150.101
RABBITMQ
RABBITMQ 3.8.19
ERLANG 24.0.3
TM
EXCHANGES
ADMIN
OVERVIEW
CHANNELS
CONNECTIONS
QUEUES
?
AUTO STRING / BASE64
ENCODING:
1
MESSAGES:
GET MESSAGE(S)
MESSAGE 1
THE SERVER REPORTED 0 MESSAGES REMAINING.
(AMQP DEFAULT)
EXCHANGE
ROUTING KEY
TWO.QUEUE
REDELIVERED
0
DELIVERY_MODE:2
PROPERTIES
HEADERS:
PAYLOAD
13 BYTES
HI,EVERYONE!
ENCODING: STRING
4.3.2.测试高可用
现在,我们让two.queue的主节点mq1宕机:
查看集群状态:
NODES
SOCKET DESCRIPTORS ?
MEMORY ?
DISK SPACE
INFO
UPTIME
NAME
ERLANG PROCESSES
FILE DESCRIPTORS
RABBIT@MG1
NODE NOT RUNNING
143 MIB
1H 3M
8.8 GIB
BASIC
DISC
98
402
RABBIT@MG2
RSS
1048576 AVAILABLE
728 MIB HIGH WATERMAT&MIB LOW WATERMARK
1048576 AVAILABLE
943629 AVAILABLE
BASIC
2
8.8 GIB
DISC
1H 3M
35
141 MIB
0
401
RABBIT@MG3
RSS
728 MIB HIGH WATERMAT& MIB LOW WATERMARK
943629 AVAILABLE
1048576 AVAILABLE
1048576 AVAILABLE
查看队列状态:
BRABBITMQ
ERLANG 24.0.3
TM
RABBITMO 3.8.19
CHANNELS
EXCHANGES
ADMIN
QUEUES
CONNECTIONS
OVERVIEW
QUEUES
ALL QUEUES(2)
MESSAGES
MESSAGE RATES
OVERVIEW
TOTAL
STATE
UNACKED
INCOMINGDELIVER/GETACK
NODE
FEATURES
READY
NAME
TYPE
NAN
CLASSIC
NAN
NAN
RABBIT@MG1
DOWN
D
SIMPLE.QUEUE
ARGS
1
0.00/S
0.00/S
0.00/S
IDLE
CLASSIC
DARGS
1
TWO,QUEUE
+1
HA-TWO
RABBIT@MG2
发现依然是健康的!并且其主节点切换到了rabbit@mq2上
5.仲裁队列
从RabbitMQ 3.8版本开始,引入了新的仲裁队列,他具备与镜像队里类似的功能,但使用更加方便。
5.1.添加仲裁队列
在任意控制台添加一个队列,一定要选择队列类型为Quorum类型。
ADD A NEW QUEUE
队列类型,必须选择QUORUM
QUORUM
TYPE:
QUORUM.QUEUE队列名称,随意
NAME:
RABBIT@MG1
NODE:
指定主节点
STRING
ARGUMENTS:
ADD
AUTO EXPIRE
MAX LENGTH
DELIVERY LIMIT
MAX LENGTH BYTES
OVERFLOW BEHAVIOUR
DEAD LETTER ROUTING KEY
MAX IN MEMORY LENGTH
SINGLE ACTIVE CONSUMER
DEAD LETTER EXCHANGE
MAX IN MEMORY BYTES
ADD QUEUE
在任意控制台查看队列:
OVERVIEW
ADMIN
CHANNELS
EXCHANGES
CONNECTIONS
QUEUES
QUEUES
ALL QUEUES(2)
MESSAGE RATES
MESSAGES
OVERVIEW
INCOMING DELIVER/GET ACK
TOTAL
UNACKED
FEATURES STATE
NODE
READY
NAME
TYPE
0
D ARGS
QUORUM.QUEUE
RUNNING
RABBIT@MG1
GUORUM
+2
1
IDLE
SIMPLE.QUEUE
RABBIT@MG1
D
CLASSIC
ARGS
可以看到,仲裁队列的 + 2字样。代表这个队列有2个镜像节点。因为仲裁队列默认的镜像数为5。如果你的集群有7个节点,那么镜像数肯定是5;而我们集群只有3个节点,因此镜像数量就是3.
5.2.测试
可以参考对镜像集群的测试,效果是一样的。
5.3.集群扩容
5.3.1.加入集群
1)启动一个新的MQ容器:
2)进入容器控制台:
3)停止mq进程
4)重置RabbitMQ中的数据:
5)加入mq1:
6)再次启动mq进程
NODES
FILE DESCRIPTORS
DISK SPACE
SOCKET DESCRIPTORS
RESET STATS
ERLANG PROCESSES
UPTIME
MEMORY
INFO
NAME
8.6 GIB
ALL NODES
404
38M 4S
37
THIS NODE
DISC
RABBIT@MG1
BASIC
148 MIB
0
RSS
728 MIB HIGH WATERMAT& MIB LOW WATERMARK
1048576 AVAILABLE
1048576 AVAILABLE
943629
9 AVAILABLE
THIS NODE
RABBIT@MG2
DISC
ALL NODES
BASIC
1H 59M
147 MIB
36
402
8.6GIB
RSS
728 MIB HIGH WATERMAT& MIB LOW WATERMARK
1048576 AVAILABLE
943629 AVAILABLE
1048576 AVAILABLE
149MIB
DISC
ALL NODES
1H 59M
8.6GIB
36
402
BASIC
THIS NODE
RABBIT@MG3
RSS
1048576 AVAILABLE 1 728 MIB HIAH WATERMA& MIB LOW WATERMIN
1048576 AVAILABLE 1 943629 AVAILABLE
DISC
2
BASIC
RABBIT@MG4
16M 10S
THIS NODE
RSS
400
136 MIB
8.6 GIB
35
LL NODES
5.3.2.增加仲裁队列副本
我们先查看下quorum.queue这个队列目前的副本情况,进入mq1容器:
执行命令:
结果:
RABBIT@MQ1
STATUS
OF
QUORUM.QUEUE ON NODE
QUORUM
QUEUE
RAFT STATE
MACHINE VERSION
NODE NAME
SNAPSHOT INDEX
COMMIT INDEX
TERM
LOG INDEX
FOLLOWER
1
UNDEFINED
RABBIT@MQ3
4
4
FOLLOWER
1
4
RABBIT@MQ2
UNDEFINED
UNDEFINED
1
LEADER
4
RABBIT@MQ1
现在,我们让mq4也加入进来:
Shell
运行代码复制代码
1
rabbitmq-queues add_member "quorum.queue" "rabbit@mq4"
结果:
RABBITMQ-QUEUES ADD_MEMBER
ROOT@MQ1://#
RABBIT@MQ4
QUORUMQUEUE
CA FOR QUEUE QUORUM.QUEUE ON NODE
ADDING A REPLICA F
RABBIT@MQ4.
ROOT@MQ1://
再次查看:
Shell
运行代码复制代码
1
rabbitmq-queues quorum_status "quorum.queue"
STATUS OF
RABBIT@MQ1
QUORUM.QUEUE ON NODE
QUEUE
QUORUM
MACHINE VERSION
SNAPSHOT INDEX
RAFT STATE
NODE
TERM
NAME
COMMIT INDEX
LOG INDEX
UNDEFINED
5
FOLLOWER
1
5
1
RABBIT@MQ4
5
FOLLOWER
5
RABBIT@MQ3
1
UNDEFINED
FOLLOWER
5
UNDEFINED
1
5
RABBIT@MQ2
5
1
5
LEADER
1
RABBIT@MQ1
UNDEFINED
查看控制台,发现quorum.queue的镜像数量也从原来的 +2 变成了 +3:
CHANNELS
EXCHANGES
ADMIN
OVERVIEW
CONNECTIONS
QUEUES
QUEUES
ALL QUEUES(2)
OVERVIEW
MESSAGE RAT
MESSAGES
INCOMING
TOTAL
UNACKED
NAME
FEATURES
STATE
READY
NODE
TYPE
0
0
RUNNING
D
GUORUM
QUORUM.GUEUE
+3
RABBIT@MG1
ARGS
SIMPLE.QUEUE
RABBIT@MQ1
1
IDLE
CLASSIC
0
ARGS