![RocketMQ实战与原理解析](https://wfqqreader-1252317822.image.myqcloud.com/cover/946/22394946/b_22394946.jpg)
2.4 常用管理命令
MQAdmin是RocketMQ自带的命令行管理工具,在bin目录下,运行mqadmin即可执行。使用mqadmin命令,可以进行创建、修改Topic,更新Broker的配置信息,查询特定消息等各种操作。本节将介绍几个常用的命令。
1.创建/修改Topic
消息的发送和接收都要有对应的Topic,需要向某个Topic发送或接收消息,所以在正式使用RocketMQ进行消息发送和接收前,要先创建Topic,创建Topic的指令是updateTopic,表2-1列出了支持的参数。
表2-1 updateTopic
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1738863354-LWLvNVmgly0tc3oLtFBcmxxrf5ewGl8H-0-010997808ffd9d99fb74e95b64b078ef)
2.删除Topic
与创建/修改Topic对应的是删除Topic,把RocketMQ系统中不用的Topic彻底清除,指令是deleteTopic,表2-2列出了支持的参数。
表2-2 deleteTopic
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0028_0002.jpg?sign=1738863354-K4AMZvFfeNkUgEBnDLm4crQ20mdvTVvJ-0-d75f5df7eada48f6bc4cc71404e82823)
3.创建/修改订阅组
订阅组在提高系统的高可用性和吞吐量方面扮演着重要的角色,比如用Clustering模式消费一个Topic里的消息内容时,可以启动多个消费者并行消费,每个消费者只消费Topic里消息的一部分,以此提高消费速度,这个时候就是通过订阅组来指明哪些消费者是同一组,同一组的消费者共同消费同一个Topic里的内容。订阅组可以被自动创建,使用这个命令一般是用来修改订阅组,指令是updateSubGroup,表2-3列出了支持的参数。
表2-3 updateSubGroup
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1738863354-mvR9MqewIxat3M9Hs010AaHQ0rIcgxmi-0-19ff29bac04b0cfb13db5d381196e94b)
4.删除订阅组
与创建或修改订阅组相对应,这个命令删除不再使用的订阅组,指令是deleteSubGroup,表2-4列出了支持的参数。
表2-4 deleteSubGroup
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0029_0002.jpg?sign=1738863354-i2pkJqGKlC2KFYXIFbP34nDYXVtWoSuk-0-71c24727eaaea5c463c4a2dd72d84b45)
5.更新Broker配置
Broker有很多的配置信息,在Broker启动时,可以通过配置文件来指定配置信息。有些配置信息支持在Broker运行的时候动态更改,更改指令是updateBrokerConfig,表2-5列出了支持的参数。
表2-5 updateBrokerConfig
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0030_0001.jpg?sign=1738863354-muG8dVx20FRwh672S4uTyqozAMjkbZm9-0-a7afdeec4260ca3557f048ce4e2428b0)
6.更新Topic的读写权限
RocketMQ支持对Topic进行权限控制,主要分为只读的Topic和可读写的Topic,权限可以通过指令updateTopicPerm来动态改变,表2-6列出了支持的参数。
表2-6 updateTopicPerm
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0030_0002.jpg?sign=1738863354-BOHDPzGkBZa0UGB3H96JGlUCR2D8YxV1-0-696a1b180e5b3507ce5536926a323472)
7.查询Topic的路由信息
Topic的路由信息指的是某个Topic所在的Broker相关信息,客户端可以通过NameServer来获取这些信息,本命令一般在调试的时候使用,指令是TopicRoute,表2-7列出了支持的参数。
表2-7 TopicRoute
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0031_0001.jpg?sign=1738863354-qq5WuFHiwAy1aRAiQ6LooyNCYc2DuIkh-0-99a5ca99414c5928de1dec3e0747294d)
8.查看Topic列表信息
上面提到的TopicRoute是列出某个Topic的相关信息,还有个指令TopicList用来列出集群中所有Topic的名称,表2-8列出了支持的参数。
表2-8 TopicList
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0031_0002.jpg?sign=1738863354-YgGE7EDv9E53s4vXQHq0Oe5kdWGFE7WS-0-a9d186395b7a8dd62b219983b2e5268a)
9.查看Topic统计信息
在使用RocketMQ的时候,经常需要查看某个Topic的状态,看看消息的数量,有多少未处理等,此时可以通过指令TopicStats来查询,表2-9列出了支持的参数。
表2-9 TopicStats
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0031_0003.jpg?sign=1738863354-XIIbXNnhG8GBQ1nrOf6idaaphFGUyjnK-0-cb667f8d0ffbd9c0c4c3cb1fb2267961)
10.根据时间查询消息
一条消息被发送到RocketMQ后,默认会带上发送的时间戳,所以我们可以根据估计的时间来查询消息,指令是printMsg,表2-10列出了支持的参数。
表2-10 printMsg
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0032_0001.jpg?sign=1738863354-sNooMz2AsovtFqMIk2O2p7qmJsFsNYP0-0-a971e73128a3f565c526cb23c6b1c07d)
11.根据消息ID查询消息
根据消息ID可以精确定位到某条消息,但是消息ID需要通过其他方式来获取,比如可以先用时间来查询出一些消息,然后定位到要找的具体某个消息,指令是queryMsgById,表2-11列出了支持的参数。
表2-11 queryMsgById
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0032_0002.jpg?sign=1738863354-K6xq2AgpB2nAgSAfYlLjpCS25N3iyf5c-0-9f076ed3e1911a234373193d8e2b5c63)
12.查看集群消息
指令clusterList用来列出集群的状态,看看有哪些Broker在提供服务,表2-12列出了支持的参数。
表2-12 clusterList
![](https://epubservercos.yuewen.com/AE9185/10987713103640706/epubprivate/OEBPS/Images/figure_0032_0003.jpg?sign=1738863354-DFVhdRFbQxy1fhGaLtpmkclRmozshYtP-0-85316b48b94f94e74a3aafeecd7a6b27)