RocketMQ提供有控制台及一系列控制台命令,用于管理员对主题,集群,broker等信息的管理;
使用步骤
进入rocketmq目录下的bin目录,可以看到该目录下有个mqadmin脚本
常用命令
查看帮助:
sh mqadmin help 命令名称
例如,查看updateTopic的使用
sh mqadmin help updateTopic
创建(修改)topic
指令 | updateTopic | 类路径 | com.alibaba.rocketmq.tools.command.topic.UpdateTopicSubCommand | ||
参数 | 是否必填 | 说明 | |||
-b | 如果 -c为空,则必填 | broker地址,表示topic建在该broker | |||
-c | 如果 -b为空,则必填 | cluster名称,表示topic建在该集群(集群可通过clusterList查询) | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
-p | 否 | 指定新topic的权限限制( W|R|WR ) | |||
-r | 否 | 可读队列数(默认为8) | |||
-w | 否 | 可写队列数(默认为8) | |||
-t | 是 | topic名称(名称只能使用字符 ^[a-zA-Z0-9_-]+$ ) | |||
举例 | 在集群DefaultCluster上创建主题ZTEExample,nameserve地址为10.45.47.168:9876 | ||||
删除topic
指令 | deleteTopic | 类路径 | com.alibaba.rocketmq.tools.command.topic.DeleteTopicSubCommand | ||
参数 | 是否必填 | 说明 | |||
-c | 是 | cluster名称,表示删除某集群下的某个topic (集群可通过clusterList查询) | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;… | |||
-t | 是 | topic名称(名称只能使用字符 ^[a-zA-Z0-9_-]+$ ) | |||
举例 | 在集群DefaultCluster上删除主题ZTEExample,nameserve地址为10.45.47.168:9876 | ||||
创建(修改)订阅组
指令 | updateSubGroup | 类路径 | com.alibaba.rocketmq.tools.command.consumer.UpdateSubGroupSubCommand | ||
参数 | 是否必填 | 说明 | |||
-b | broker地址,表示订阅组建在该broker | ||||
-c | cluster名称,表示topic建在该集群(集群可通过clusterList查询) | ||||
-d | 否 | 是否容许广播方式消费 | |||
-g | 是 | 订阅组名 | |||
-i | 否 | 从哪个broker开始消费 | |||
-m | 否 | 是否容许从队列的最小位置开始消费,默认会设置为false | |||
-q | 否 | 消费失败的消息放到一个重试队列,每个订阅组配置几个重试队列 | |||
-r | 否 | 重试消费最大次数,超过则投递到死信队列,不再投递,并报警 | |||
-s | 否 | 消费功能是否开启 | |||
-w | 否 | 发现消息堆积后,将Consumer的消费请求重定向到另外一台Slave机器 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
指令 | deleteSubGroup | 类路径 | com.alibaba.rocketmq.tools.command.consumer.DeleteSubscriptionGroupCommand | ||
参数 | 是否必填 | 说明 | |||
-b | broker地址,表示订阅组建在该broker | ||||
-c | cluster名称,表示topic建在该集群(集群可通过clusterList查询) | ||||
-g | 是 | 订阅组名 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
更新broker配置文件
指令 | updateBrokerConfig | 类路径 | com.alibaba.rocketmq.tools.command.broker.UpdateBrokerConfigSubCommand | ||
参数 | 是否必填 | 说明 | |||
-b | broker地址,表示订阅组建在该broker | ||||
-c | cluster名称,表示topic建在该集群(集群可通过clusterList查询) | ||||
-k | 是 | keyֵ | |||
-v | 否 | valueֵ | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
查看topic列表信息
指令 | topicList | 类路径 | com.alibaba.rocketmq.tools.command.broker.UpdateBrokerConfigSubCommand | ||
参数 | 是否必填 | 说明 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | nameserve地址为192.168.140.129:9876;192.168.140.128:9876 | ||||
sh mqadmin topicList -n 192.168.140.129:9876;192.168.140.128:9876 打印内容: %DLQ%consumer1BenchmarkTest TopicTest broker-a DefaultCluster SELF_TEST_TOPIC rocketmq-cluster broker-b TBW102 %RETRY%consumer1 OFFSET_MOVED_EVENT |
查看topic路由信息
指令 | topicRoute | 类路径 | com.alibaba.rocketmq.tools.command.topic.TopicRouteSubCommand | ||
参数 | 是否必填 | 说明 | |||
-t | 是 | topic名称 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查看主题%DLQ%consumer1的路由,nameserve地址为192.168.140.129:9876 | ||||
sh mqadmin topicRoute -n 192.168.140.129:9876 -t %DLQ%consumer1 打印内容: {"brokerDatas":[ { "brokerAddrs":{0:"192.168.140.128:10911" }, "brokerName":"broker-a" }, { "brokerAddrs":{0:"192.168.140.129:10911" }, "brokerName":"broker-b" } ], "filterServerTable":{}, "queueDatas":[ { "brokerName":"broker-b", "perm":6, "readQueueNums":8, "topicSynFlag":0, "writeQueueNums":8 }, { "brokerName":"broker-a", "perm":6, "readQueueNums":8, "topicSynFlag":0, "writeQueueNums":8 } ] } |
查看topic统计信息
指令 | topicStats | 类路径 | com.alibaba.rocketmq.tools.command.topic.TopicStatsSubCommand | ||
参数 | 是否必填 | 说明 | |||
-t | 是 | topic名称 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查看主题%DLQ%consumer1的统计信息,nameserve地址为192.168.140.129:9876 | ||||
打印内容:(统计信息里包括有offset、最后更新时间) |
查看broker统计信息
指令 | brokerStats | 类路径 | com.alibaba.rocketmq.tools.command.broker.BrokerStatsSubCommand | ||
参数 | 是否必填 | 说明 | |||
-b | 是 | broker地址 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查看broker(crmdb)的统计信息,broker地址为192.168.159.128:10911,nameserve地址为192.168.159.128:9876 | ||||
打印内容: 34(97.14285714285714%) 1(2.857142857142857%) 0(0.0%) 0(0.0%) 0(0.0%) 0(0.0%) 0(0.0%) |
指令 | queryMsgById | 类路径 | com.alibaba.rocketmq.tools.command.message.QueryMsgByIdSubCommand | ||
参数 | 是否必填 | 说明 | |||
-i | 是 | msgId | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询msgId= C0A89F8000002A9F000000000000449A的消息,nameserve地址为192.168.159.129:9876 | ||||
sh mqadmin queryMsgById -n 192.168.159.129:9876 -i C0A89F8000002A9F000000000000449A 打印内容: MessageTrack [consumerGroup=consumer1, trackType=SUBSCRIBED_AND_CONSUMED, exceptionDesc=null] |
根据消息key查询消息
指令 | queryMsgByKey | 类路径 | com.alibaba.rocketmq.tools.command.message.QueryMsgByKeySubCommand | ||
参数 | 是否必填 | 说明 | |||
-f | 否 | 被查询消息的截止时间 | |||
-k | 是 | msgKey | |||
-t | 是 | Topic名称 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询Topic= TopicTest下key=i0的消息,nameserve地址为192.168.140.128:9876 | ||||
sh mqadmin queryMsgByKey -n 192.168.140.128:9876 -t TopicTest -k i0 打印内容: |
根据Offset查询消息
指令 | queryMsgByOffset | 类路径 | com.alibaba.rocketmq.tools.command.message.QueryMsgByOffsetSubCommand | ||
参数 | 是否必填 | 说明 | |||
-b | 是 | Broker名称,表示订阅组建在该broker(这里需要注意填写的是broker的名称,不是broker的地址,broker名称可以在clusterList查到) | |||
-i | 是 | query队列id | |||
-o | 是 | offsetֵ | |||
-t | 是 | topic名称 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询brokerName=broker-a,Topic= TopicTest的第1个队列下offset=0的消息,nameserve地址为192.168.140.128:9876 | ||||
sh mqadmin queryMsgByOffset -n 192.168.140.128:9876 -b broker-a -i 0 -t TopicTest -o 0 打印内容:
|
注:以下命令均未测试过
查询Producer的网络连接
该命令只打印当前与cluster连接的producer网络连接信息
指令 | producerConnection | 类路径 | com.alibaba.rocketmq.tools.command.connection.ProducerConnectionSubCommand | ||
参数 | 是否必填 | 说明 | |||
-g | 是 | 生产者所属组名 | |||
-t | 是 | topic名称 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询当前属于group(生产者组)=simple-producer-test的生产者到topic=ZTEExample的网络连接,nameserve地址为10.45.47.168:9876 | ||||
sh mqadmin producerConnection -n 10.45.47.168:9876 -g simple-producer-test -t ZTEExample 打印内容: |
指令 | consumerConnection | 类路径 | com.alibaba.rocketmq.tools.command.connection.ConsumerConnectionSubCommand | ||
参数 | 是否必填 | 说明 | |||
-g | 是 | 消费者所属组名 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询当前属于group(消费者组)=simple-consumer-test的消费者的网络连接,nameserve地址为10.45.47.168:9876 | ||||
sh mqadmin consumerConnection -n 10.45.47.168:9876 -g simple-consumer-test 打印内容: Below is subscription: ConsumeType: CONSUME_ACTIVELY MessageModel: CLUSTERING ConsumeFromWhere: CONSUME_FROM_LAST_OFFSET |
查看订阅组消费状态
指令 | consumerProgress | 类路径 | com.alibaba.rocketmq.tools.command.consumer.ConsumerProgressSubCommand | ||
参数 | 是否必填 | 说明 | |||
-g | 是 | 消费者所属组名 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询当前属于group(消费者组)=simple-consumer-test的订阅状态,nameserve地址为10.45.47.168:9876 | ||||
sh mqadmin consumerProgress -n 10.45.47.168:9876 -g simple-consumer-test 打印内容: Consume TPS: 0 Diff Total: 0 |
查看集群消息
指令 | clusterList | 类路径 | com.alibaba.rocketmq.tools.command.cluster.ClusterListSubCommand | ||
参数 | 是否必填 | 说明 | |||
-m | 否 | ||||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询当前集群状态,nameserve地址为10.45.47.168:9876 | ||||
sh mqadmin clusterList -n 10.45.47.168:9876 打印内容: |
添加(更新)KV配置信息
指令 | updateKvConfig | 类路径 | com.alibaba.rocketmq.tools.command.namesrv.UpdateKvConfigCommand | ||
参数 | 是否必填 | 说明 | |||
-k | 是 | keyֵ | |||
-v | 是 | valueֵ | |||
-s | 是 | Namespaceֵ | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
删除KV配置信息
指令 | deleteKvConfig | 类路径 | com.alibaba.rocketmq.tools.command.namesrv.DeleteKvConfigCommand | ||
参数 | 是否必填 | 说明 | |||
-k | 是 | keyֵ | |||
-s | 是 | Namespaceֵ | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
添加(更新)Project group配置信息
指令 | updateProjectGroup | 类路径 | com.alibaba.rocketmq.tools.command.namesrv.UpdateProjectGroupCommand | ||
参数 | 是否必填 | 说明 | |||
-i | 是 | 服务器ip | |||
-p | 是 | project group名 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
删除Projectgroup配置信息
指令 | deleteProjectGroup | 类路径 | com.alibaba.rocketmq.tools.command.namesrv.DeleteProjectGroupCommand | ||
参数 | 是否必填 | 说明 | |||
-i | 是 | 服务器ip | |||
-p | 是 | project group名 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
取得Projectgroup配置信息
指令 | getProjectGroup | 类路径 | com.alibaba.rocketmq.tools.command.namesrv.GetProjectGroupCommand | ||
参数 | 是否必填 | 说明 | |||
-i | 是 | 服务器ip | |||
-p | 是 | project group名 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
设置消费进度
指令 | resetOffsetByTime | 类路径 | com.alibaba.rocketmq.tools.command.offset.ResetOffsetByTimeSubCommand | ||
参数 | 是否必填 | 说明 | |||
-f | 否 | 通过时间戳强制回滚(true|false),默认为true | |||
-s | 是 | 时间戳 (currentTimeMillis|yyyy-MM-dd#HH:mm:ss:SSS) | |||
-g | 是 | 消费者所属组名 | |||
-t | 是 | topic名称 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
清除特定Broker权限
指令 | wipeWritePerm | 类路径 | com.alibaba.rocketmq.tools.command.namesrv.WipeWritePermSubCommand | ||
参数 | 是否必填 | 说明 | |||
-b | 是 | broker地址 | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | |||||
获取Consumer消费进度
指令 | getConsumerStatus | 类路径 | com.alibaba.rocketmq.tools.command.offset.GetConsumerStatusCommand | ||
参数 | 是否必填 | 说明 | |||
-g | 是 | 消费者所属组名 | |||
-t | 是 | 查询主题 | |||
-i | 否 | Consumer客户端ip | |||
-h | 否 | 打印帮助 | |||
-n | 是 | nameserve服务地址列表,格式ip:port;ip:port;... | |||
举例 | 查询属于group(消费者组)=simple-consumer-test的消费者在Topic=ZTEExample上的消费状态,nameserve地址为10.45.47.168:9876 | ||||
sh mqadmin getConsumerStatus -n 10.45.47.168:9876 -g simple-consumer-test -t ZTEExample get consumer status from client. group=simple-consumer-test, topic=ZTEExample, originClientId= |