一、常用命令

下载地址

# 配置环境变量
vim /etc/profile
---------------------------------
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export ROCKETMQ_HOME=/home/qiang/software/rocketmq-all-4.8.0-bin-release
export PATH=$ROCKETMQ_HOME/bin:$PATH
---------------------------------
source /etc/profile
# 启动nameserver
sh mqnamesrv >mqnamesrv.log 2>&1 &
# 停止nameserver
sh mqshutdown namesrv
# 启动broker
sh mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true >mqbroker.log 2>&1 &
# 指定配置文件
sh mqbroker -n 127.0.0.1:9876 -c ../conf/broker.conf autoCreateTopicEnable=true >mqbroker.log 2>&1 &
# 停止broker
sh mqshutdown broker
# 查看topic列表
sh mqadmin topicList -n 127.0.0.1:9876
# 查看cluster列表
sh mqadmin clusterList -n 127.0.0.1:9876
sh mqadmin clusterList -n 127.0.0.1:9876 -m
# 创建主题
sh mqadmin updateTopic -t testTopic -c DefaultCluster -n 127.0.0.1:9876
# 删除主题
sh mqadmin deleteTopic -c DefaultCluster -t testTopic -n 127.0.0.1:9876
# 创建订阅组
sh mqadmin updateSubGroup -c DefaultCluster -g testGroup -n 127.0.0.1:9876
# 删除订阅组
sh mqadmin deleteSubGroup -c DefaultCluster -g testGroup -n 127.0.0.1:9876
# 查看所有消费者组
sh mqadmin consumerProgress -n 127.0.0.1:9876
# 查看指定主题的详细统计
sh mqadmin topicstatus -t testTopic -n 127.0.0.1:9876
# 查看broker所有的配置,一定要指定配置文件,否则配置文件会被替换掉
sh mqbroker -p ../conf/broker.conf
# 查看帮助命令,如查看topicList的帮助命令
sh mqadmin help topicList

二、详细命令参数

1.创建Topic

指令:updateTopic

用法:sh mqadmin updateTopic -t testTopic -c DefaultCluster -n 127.0.0.1:9876

参数是否必填说明
-b如果-c为空,则必填broker 地址,表示topic 建在该broker
-c如果-b为空,则必填cluster 名称,表示topic 建在该集群(集群可通过clusterList 查询)
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...
-p指定新topic 的权限限制( W|R|WR )
-r可读队列数(默认为8)
-w可写队列数(默认为8)
-ttopic 名称(名称只能使用字符 ^[a-zA-Z0-9_-]+$ )

2.删除Topic

指令:deleteTopic

用法:sh mqadmin deleteTopic -c DefaultCluster -t testTopic -n 127.0.0.1:9876

参数是否必填说明
-ccluster 名称,表示删除某集群下的某个topic (集群可通过clusterList 查询)
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
-ttopic 名称(名称只能使用字符 ^[a-zA-Z0-9_-]+$ )

3.创建订阅组

指令:updateSubGroup

用法:sh mqadmin updateSubGroup -c DefaultCluster -g testGroup -n 127.0.0.1:9876

参数是否必填说明
-b如果 –c 为空,则必填broker 地址,表示订阅组建在该broker
-c如果 –b 为空,则必填cluster名称,表示topic 建在该集群(集群可通过clusterList查询)
-d是否容许广播方式消费
-g订阅组名
-i从哪个broker 开始消费
-m是否容许从队列的最小位置开始消费,默认会设置为false
-q消费失败的消息放到一个重试队列,每个订阅组配置几个重试队列
-r重试消费最大次数,超过则投递到死信队列,不再投递,并报警
-s消费功能是否开启
-w发现消息堆积后,将Consumer 的消费请求重定向到另外一台Slave 机器
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

4.删除订阅组配置

指令:deleteSubGroup

用法:sh mqadmin deleteSubGroup -c DefaultCluster -g testGroup -n 127.0.0.1:9876

参数是否必填说明
-b如果–c 为空,则必填broker 地址,表示订阅组建在该broker
-c如果–b 为空,则必填cluster 名称,表示topic建在该集群(集群可通过clusterList查询)
-g订阅组名
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

5.更新Broker配置文件

指令:updateBrokerConfig

用法:sh mqadmin updateBrokerConfig -c DefaultCluster -k deleteWhen -v 04 -n 127.0.0.1:9876

参数是否必填说明
-b如果–c为空,则必填broker 地址,表示订阅组建在该broker
-c如果–b 为空,则必填cluster名称,表示topic 建在该集群(集群可通过clusterList查询)
-kkey 值
-vvalue 值
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

6.查看Topic列表信息

指令:topicList

用法:sh mqadmin topicList -n 127.0.0.1:9876

参数是否必填说明
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

7. 查看Topic 路由信息

指令:topicRoute

用法:sh mqadmin topicRoute -t testTopic -n 127.0.0.1:9876

参数是否必填说明
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

8.查看Topic统计信息

指令:topicStatus

用法:sh mqadmin topicStatus -t testTopic -n 127.0.0.1:9876

参数是否必填说明
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

9.查看Broker统计信息

指令:brokerStatus

用法:sh mqadmin brokerStatus -n 127.0.0.1:9876

参数是否必填说明
-bbroker 地址
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

10.根据消息ID查询消息

指令:queryMsgById

参数是否必填说明
-i消息id
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

11.根据消息Key查询消息

指令:queryMsgByKey

参数是否必填说明
-f被查询消息的截止时间
-kmsgKey
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

12.根据Offset查询消息

指令:queryMsgByOffset

参数是否必填说明
-bBroker 名称,表示订阅组建在该broker(这里需要注意填写的是broker 的名称,不是broker 的地址,broker名称可以在clusterList 查到
-iquery 队列id
-ooffset 值
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

13.查询Producer的网络连接

该命令只打印当前与cluster 连接的producer 网络连接信息

指令:producerConnection

参数是否必填说明
-g生产者所属组名
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

14.查询Consumer的网络连接

该命令只打印当前与cluster 连接的consumer 网络连接信息

指令:consumerConnection

参数是否必填说明
-g消费者所属组名
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

15.查看订阅组消费状态

指令:consumerProgress

参数是否必填说明
-g消费者所属组名
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

16.查看集群消息

指令:clusterList

参数是否必填说明
-m打印更多信息
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

17.添加KV配置信息

指令:updateKvConfig

参数是否必填说明
-kkey 值
-vvalue 值
-sNamespace 值
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

18.删除KV配置信息

指令:deleteKvConfig

参数是否必填说明
-kkey 值
-sNamespace 值
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

19.添加Project group配置信息

指令:updateProjectGroup

参数是否必填说明
-pproject group 名
-i服务器ip
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

20.删除Project group配置信息

指令:deleteProjectGroup

参数是否必填说明
-pproject group 名
-i服务器ip
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

21.取得Project group配置信息

指令:getProjectGroup

参数是否必填说明
-pproject group 名
-i服务器ip
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

22.设置消费进度

根据时间来设置消费进度,设置之前要关闭这个订阅组的所有consumer,设置完再启动,方可生效

指令:resetOffsetByTime

参数是否必填说明
-f通过时间戳强制回滚(true|false),默认为true
-s时间戳
-g消费者所属组名
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

23.清除特定Broker权限

指令:wipeWritePerm

参数是否必填说明
-bbroker 地址
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;...

三、常用参数优化

3.1 启动broker内存过大

修改runbroker.sh文件

# 默认配置
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
# 修改配置
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

3.2 启动nameserv内存过大

修改runserver.sh文件

# 默认配置
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# 修改配置
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

四、常见问题

4.1 发送消息失败

问题:

Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 172.31.0.1:10911 failed

分析:

1.服务器的多网卡导致,这里因为docker的虚拟网卡

解决:

1.修改broker.conf配置文件
---------------------------------------
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 主要添加这两行
namesrvAddr = 192.168.17.101:9876
brokerIP1 = 192.168.17.101
---------------------------------------
2.指定配置文件启动
./mqbroker -n 127.0.0.1:9876 -c ../conf/broker.conf autoCreateTopicEnable=true >mqbroker.log 2>&1 &

4.2 磁盘占比过高

问题:

org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14  DESC: service not available now, maybe disk full, CL:  0.94 CQ:  0.94 INDEX:  0.94, maybe your broker machine memory too small.

分析:

1.服务现在不可用
2.可能磁盘已满
3.也许代理计算机内存太小

解决:

1.释放磁盘内存
2.将挂载数据存放的目录存放在空间足够的磁盘下