《RocketMQ实战与原理解析》学习笔记
单机版
rocketMQ 安装&命令
下载安装
> wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-source-release.zip
> unzip rocketmq-all-4.4.0-source-release.zip
> mvn -Prelease-all -DskipTests clean install -U
> cd distribution/target/apache-rocketmq
启动Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
启动Broker
> nohup sh bin/mqbroker -n localhost:9876 &
> tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...
发送/接收消息(命令行)
### 生产消息
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
接收消息(命令行)
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
关闭服务命令
> sh bin/mqshutdown broker
> sh bin/mqshutdown namesrv
生产环境(集群)
master.conf
### broker-b-master.conf
namesrvAddr=s157:9876;s158:9876
brokerClusterName = DefaultCluster
### brokerName要注意不同
brokerName = broker-b
### 一个 Master Barker 可以有多个 Slave, 0 表示 Master ,大于 0 表示不同Slave 的 ID 。
brokerId = 0
### 与 fileReservedTim巳 参数呼应,表明在几点做消息删除动作,默认值 04 表示凌晨 4 点 。
deleteWhen = 04
### 在磁盘上保存消息的时长,单位是小时,自动删除超时的消息 。
fileReservedTime = 48
### master角色分为ASYNC_MASTER,SYNC_MASTER
### 关键词 SYNC 和 ASYNC 表示 Master 和 Slave 之间同步消息的机制,
### SYNC 的意思是当 Slave 和 Master 消息同步完成后,再返回发送成功的状态 。
brokerRole = ASYNC_MASTER
### flushDiskType 表示刷 盘策略,分为 SYNC_FLUSH 和 ASYNC_FLUSH 两种,分别代表同步刷盘和异步刷盘 。
### 同步刷盘情况下,消息真正写人磁盘后再返回成功状态;
### 异步刷盘情况下,消息写人 page_cache 后就返回成功状态 。
flushDiskType = ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocket/store-b-master
### 不配置,会找到docker的地址
### 当前broker监听的IP
brokerIP1=s158
### 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2=s158
broker-slave.conf
### broker-b-slave.conf
namesrvAddr=s157:9876;s158:9876
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
listenPort=11011
storePathRootDir=/home/rocket/store-b-slave
指定conf文件,启动broker
nohup sh . /bin/mqbroker -c config_file &
管理命令
topic
创建/修改Topic
例
:> sh bin/mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t topic1
删除 Topic
例
:sh bin/mqadmin deleteTopic -c DefaultCluster -n localhost:9876 -t topic1
更新 Topic 的读写权限
查询 Topic 的路由信息
Topic的路由信息指的是某个Topic所在的Broker相关信息,
客户端可以通过NameServer来获取这些信息,本命令一般在调试的时候使用,指令是TopicRoute
例
:sh bin/mqadmin topicRoute -n localhost:9876 -t topic1
查看 Topic 列表信息
例
:sh bin/mqadmin topicList -n localhost:9876
查看 Topic 统计信息
在使用 RocketMQ 的时候,经常需要查看某个 Top ic 的状态,看看消息的
数量,有多少未处理等,此时可以通过指令 topicStats
来查询
例
:sh bin/mqadmin topicStatus -n localhost:9876 -t topic1
订阅组
创建/修改订阅组
订阅组可以被自动创建,使用这个命令一般是用来修改订阅组
。
删除订阅组
更新 Broker 配置
Broker有很多的配置信息,在Broker启动时,可以通过配置文件来指定配置信息。有些配置信息支持在Broker运行的时候动态更改,更改指令是updateBrokerConfig
消息相关
根据时间查询消息
一条消息被发送到RocketMQ后,默认会带上发送的时间戳,所以我们可以根据估计的时间来查询消息,指令是printMsg
例
:sh bin/mqadmin printMsg -n localhost:9876 -t topic1
根据消息 ID 查询消息
根据消息ID可以精确定位到某条消息,但是消息ID需要通过其他方式来获取,
比如可以先用时间来查询出一些消息,然后定位到要找的具体某个消息,指令是queryMsgByld
例
:sh bin/mqadmin queryMsgById -n localhost:9876 -i C0A8819D00002A9F000000000000421E
根据路径查看内容:
集群状态
查看集群消息
指令clusterList
用来列出集群的状态,看看有哪些Broker在提供服务
例
:sh bin/mqadmin clusterList -n localhost:9876
界面化工具
rocketmq-console
#### 下载源码
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
### 打包部署
> mvn clean package -Dmaven.test.skip=true
> nohup java -jar target/rocketmq-console-ng-1.0.1.jar --server.port=8888 --rocketmq.config.namesrvAddr=localhost:9876 &