RocketMQ实战系列-RocketMQ命令详解

导语
  之前分析了关于RocketMQ源码的东西,接下来的阶段就是进入到实战的相关系列操作中,在这个系列中也会继续从源码的角度入手,深入的分析,在RocketMQ中的编程思想。下面就来介绍一下在RocketMQ中使用到的相关命令。

RocketMQ命令详解

RocketMQ安装后的bin目录下"mqadmin"执行命令,用来执行RocketMQ的命令集

Broker

clusterList:查看集群
参数是否必填说明
-m打印更多信息
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/admin clusterList -n 192.168.3.236:9876
updateBrokerConfig:更新Broker 配置文件
参数是否必填说明
-b如果–c为空,则必填broker 地址,表示订阅组建在该broker
-c如果–b 为空,则必填cluster名称,表示topic 建在该集群(集群可通过clusterList查询)
-kkey 值
-vvalue 值
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin updateBrokerConfig -n 192.168.3.236:9876 -c loyalRocketMQCluster -k brokerName -v test
brokerStatus:查看broker状态
参数是否必填说明
-bbroker 地址
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin brokerStatus -n 192.168.3.236:9876 -b rocketmq-nameserver-1:10911

Topic

updateTopic:创建Topic
参数是否必填说明
-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 名称(名称只能使用字符 1+$ )
# 示例:在RocketMQ安装目录下
./bin/mqadmin updateTopic -t loyalTopic -c loyalRocketMQCluster -n 192.168.3.236:9876
deleteTopic:删除Topic
参数是否必填说明
-ccluster 名称,表示删除某集群下的某个topic (集群可通过clusterList 查询)
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
-ttopic 名称(名称只能使用字符 2+$ )
./bin/mqadmin deleteTopic -t loyalTopic -c loyalRocketMQCluster -n 192.168.3.236:9876
topicList:查看Topic 列表
参数是否必填说明
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin topicList -n 192.168.3.236:9876
topicRoute:查看Topic 路由
参数是否必填说明
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;
./bin/mqadmin topicRoute -n 192.168.3.236:9876 -t loyalTest
topicStatus:查看Topic统计信息
参数是否必填说明
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin topicStatus -n 192.168.3.236:9876 -t loyalTest

Consumer:消费者

updateSubGroup:修订、创建订阅组
参数是否必填说明
-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;…
./bin/mqadmin updateSubGroup -n 192.168.3.236:9876 -g loyalTestConsumerGroup -c loyalRocketMQCluster 
deleteSubGroup:删除订阅组
参数是否必填说明
-b如果–c 为空,则必填broker 地址,表示订阅组建在该broker
-c如果–b 为空,则必填cluster 名称,表示topic建在该集群(集群可通过clusterList查询)
-g订阅组名
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin deleteSubGroup -n 192.168.3.236:9876 -g loyalTestConsumerGroup -c loyalRocketMQCluster
consumerProgress:查看订阅组消费状态
参数是否必填说明
-g消费者所属组名
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;
./bin/mqadmin consumerProgress -n 192.168.3.236:9876 -g loyalTestConsumerGroup
consumerConnection:查看Consumer的连接信息
参数是否必填说明
-g消费者所属组名
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin consumerConnection -n 192.168.3.236:9876 -g loyalTestConsumerGroup
getConsumerStatus:获取Consumer消费进度
参数是否必填说明
-g消费者所属组名
-t查询主题
-iConsumer 客户端ip
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin getConsumerStatus -n 192.168.3.236:9876 -g loyalTestConsumerGroup -t
queryMsgByKey :根据消息Key 查询消息
参数是否必填说明
-f被查询消息的截止时间
-kmsgKey
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin queryMsgByKey -n 192.168.3.236:9876 -t loyalTest -k testKey
queryMsgById:根据消息ID 查询消息
参数是否必填说明
-i消息id
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin queryMsgById -n 192.168.3.236:9876 -i C0A803EC00002A9F00000000000136FD
queryMsgByOffset:根据消息的偏移值来查询消息
参数是否必填说明
-bBroker 名称,表示订阅组建在该broker(这里需要注意填写的是broker 的名称,不是broker 的地址,broker名称可以在clusterList 查到
-iquery 队列id
-ooffset 值
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin queryMsgByOffset -n 192.168.3.236:9876 -b rocketmq-nameserver-1 -i 10 -o 1 -t loyalTest

Producer

producerConnection:查询Producer 的网络连接
参数是否必填说明
-g生产者所属组名
-ttopic 名称
-h打印帮助
-nnameserve 服务地址列表,格式ip:port;ip:port;…
./bin/mqadmin producerConnection -n 192.168.3.236:9876 -g testProducerGroup -t testTopic

Console

启动Console
# 运行jar包,指定端口及名称服务器集群地址
nohup java -jar ./rocketmq-console-ng-1.0.0.jar --server.port=8080 --rocketmq.config.namesrvAddr=10.16.13.90:9876,10.16.13.91:9876 &

总结

  上面的内容介绍了关于在不同的地方使用RocketMQ 的命令,在之前分析源码的时候也看到过关于这些命令的操作。在后续的操作分析中也会继续为大家分析这些命令背后的隐藏的逻辑。从源码入手,从原理入手,深入的学习RocketMQ,要想更好的使用工具,首先要更好的了解工具,让工具变成自己的东西。


  1. a-zA-Z0-9_- ↩︎

  2. a-zA-Z0-9_- ↩︎

`rocketmq-spring-boot-starter` 和 `rocketmq-client-java` 是 Apache RocketMQ 提供的两个不同层次的客户端工具,分别适用于不同的应用场景和开发框架。以下是两者的主要区别和特点: ### 1. 定位和适用场景 `rocketmq-client-java` 是 RocketMQ 的原生 Java 客户端库,提供了对 RocketMQ 所有核心功能的访问接口,包括消息的发送、消费、事务消息、延迟消息等。它适用于任何 Java 项目,尤其是那些没有使用 Spring Boot 框架的项目。开发者需要手动配置和管理 Producer、Consumer、NameServer 地址等参数,并处理底层的连接和异常[^1]。 `rocketmq-spring-boot-starter` 是基于 `rocketmq-client-java` 的封装,专为 Spring Boot 项目设计。它通过 Spring Boot 的自动配置机制简化了 RocketMQ 客户端的集成,使得开发者可以通过简单的配置文件(如 `application.yml` 或 `application.properties`)完成 RocketMQ 的初始化和使用。它更适合在 Spring Boot 项目中快速集成 RocketMQ 功能,减少了手动配置和管理的复杂性[^2]。 ### 2. 使用方式和配置 在使用 `rocketmq-client-java` 时,开发者需要手动编写代码来创建和管理生产者(`DefaultMQProducer`)和消费者(`DefaultMQPushConsumer`)实例,并在代码中指定 NameServer 地址、主题(Topic)、标签(Tag)等参数。例如: ```java DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); ``` 而在 `rocketmq-spring-boot-starter` 中,这些配置可以通过 `application.yml` 文件完成: ```yaml rocketmq: producer: group: my-group namesrv-addr: 127.0.0.1:9876 ``` 同时,可以通过注入 `RocketMQTemplate` 来直接发送和消费消息,无需手动管理底层资源: ```java @Autowired private RocketMQTemplate rocketMQTemplate; rocketMQTemplate.convertAndSend("test-topic", "Hello RocketMQ"); ``` 这种方式极大地简化了 RocketMQ 在 Spring Boot 项目中的集成流程[^3]。 ### 3. 功能支持 `rocketmq-client-java` 提供了完整的 RocketMQ 功能支持,包括同步发送、异步发送、单向发送、拉取模式、事务消息等。开发者可以根据需求灵活地使用这些功能。 `rocketmq-spring-boot-starter` 在此基础上进行了封装,虽然也支持大部分常用功能,但某些高级特性可能需要通过自定义配置或扩展实现。例如,在某些版本中可能存在对事务消息支持不完善的情况,或者需要额外的依赖配置来启用特定功能[^4]。 ### 4. 版本兼容性 由于 `rocketmq-spring-boot-starter` 是基于 `rocketmq-client-java` 的封装,因此其版本通常与 RocketMQ 核心客户端版本保持一致或存在一定的依赖关系。在使用时需要注意版本匹配问题,尤其是在 Spring Boot 3.x 等新版本框架中,可能会出现兼容性问题,需要选择合适的 starter 版本[^5]。 ### 5. 适用框架 `rocketmq-client-java` 适用于所有 Java 项目,包括传统的 Spring Framework 项目、Java EE 项目以及非 Spring 项目。 `rocketmq-spring-boot-starter` 则专为 Spring Boot 项目设计,提供了与 Spring Boot 生态系统的良好集成,如自动配置、依赖注入、健康检查等功能。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值