rocketmq消息队列集群部署及其使用

一、介绍

rocketmq是一款分布式消息系统,消息生产者负责创建消息并且发送消息到rocketmq服务器,rocketmq服务器会将消息持久化到磁盘,消息消费者再从rocketmq的服务器拉取消息并且提交给应用消费。

 

二、特点

1、支持严格的消息顺序

2、支持topic和queue两种模式

3、亿级消息堆积能力

4、分布式特性

5、支持push和pull方式消费

 

三、RocketMQ的部署结构

 

1、Name Server 可集群部署,节点之间无任何信息同步

2、Broker(消息中转角色,负责存储消息,转发消息) 部署相对复杂,Broker 分为Master 与Slave,一个Master 可以对应多个Slave,但是一个Slave 只能对应一个Master,Master 与Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId来定 义,BrokerId为0 表示Master,非0 表示Slave。Master 也可以部署多个。

3、Producer 与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server 取Topic 路由信息,并向提供Topic 服务的Master 建立长连接,且定时向Master 发送心跳。Producer 完全无状态,可集群部署。

4、Consumer 与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server 取Topic 路由信息,并向提供Topic 服务的Master、Slave 建立长连接,且定时向Master、Slave 发送心跳。Consumer既可以从Master 订阅消息,也可以从Slave 订阅消息,订阅规则由Broker 配置决定。

 

Broker:消息中转角色,负责存储消息,转发消息

Broker集群有多种配置方式:

 

1)单Master

优点:除了配置简单没什么优点

缺点:不可靠,该机器重启或宕机,将导致整个服务不可用

2)多Master

优点:配置简单,性能最高
缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性

3)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级
优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预
缺点:Master宕机或磁盘损坏时会有少量消息丢失

4)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功
优点:服务可用性与数据可用性非常高
缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主

 

Master和Slave的配置文件参考conf目录下的配置文件

Master与Slave通过指定相同的brokerName参数来配对,Master的BrokerId必须是0,Slave的BrokerId必须是大于0的数。
一个Master下面可以挂载多个Slave,同一Master下的多个Slave通过指定不同的BrokerId来区分。

 

Rocketmq默认给出了三种建议配置模式: 2m-2s-async(主从异步); 2m-2s-sync(主从同步); 2m-noslave(仅master)

 

【主从异步】消息写入master节点,再由master节点异步复制到slave节点,类似mysql中的master-slave机制。

【主从同步】消息同时写入master节点和slave节点。

【异步刷盘】Broker的一种持久化策略,消息写入pagecache后,直接返回。由异步线程负责将pagecache写入硬盘。

【同步刷盘】Broker的一种持久化策略,消息写入pagecache后,由同步线程将pagecache写入硬盘后,再返回。

四、rocketmq分布式部署案例

1、部署环境基础信息

部署需求【两台机器,可以做主从【或者多主多从,这里做双master双slave,同步双写,异步刷盘】,broker-a主节点和broker-b-s一台机器,broker-b和broker-a-s一台机器,nameserver随便一台机器或者2太都部署nameserver】

IP地址 主机名 部署角色 模式
1.1.1.13

mq-master01

mq-slave02

broker-a

broker-b-s

 
1.1.1.237

mq-master02

mq-slave01

broker-b

broker-a-s

 
1.1.1.13 mq-console-nameserver nameserver  

【注:两台机器互通、安装统一的java环境(这里统一用jdk1.8)、hosts绑定、】

###jdk1.8
[root@baibu-base-dev-hw-13 ~]# java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

####主机名绑定
[root@baibu-base-dev-hw-13 ~]# cat /etc/hosts
1.1.1.13   mq-master01  mq-slave02  broker-a  broker-b-s  mq-console-nameserver 
1.1.1.237  mq-master02  mq-slave01  broker-b  broker-a-s

2、rocektmq broker 双master双slave部署

     rocketmq官网地址:http://rocketmq.apache.org

   1) 下载安装包解压【2台机器同样操作】

      

[root@baibu-base-dev-hw-13 ~]# cd /data/server/rocketmq

[root@baibu-base-dev-hw-13 ~]# wget 
 http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip

[root@baibu-base-dev-hw-13 rocketmq]# unzip rocketmq-all-4.2.0-bin-release.zip

[root@baibu-base-dev-hw-13 rocketmq]# ls
benchmark  bin  conf  lib  LICENSE  logs  NOTICE  README.md  rocketmq-all-4.2.0-bin-release.zip  

#创建存储路径
[root@baibu-base-dev-hw-13 rocketmq]# mkdir -p store/commitlog
[root@baibu-base-dev-hw-13 rocketmq]# mkdir -p store/consumequeue
[root@baibu-base-dev-hw-13 rocketmq]# mkdir -p store/index

[root@baibu-base-dev-hw-13 rocketmq]# ls /data/server/rocketmq/store
commitlog   consumequeue  index  

2)配置rocketmq broker【2台机器同样操作】

主机 1.1.1.13 相关配置

master01节点配置: [root@baibu-base-dev-hw-13 2m-2s-sync]# vim /data/server/rocketmq/conf/2m-2s-sync/broker-a.properties

[root@baibu-base-dev-hw-13 2m-2s-sync]# vim /data/server/rocketmq/conf/2m-2s-sync/broker-a.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-a

#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=1.1.1.13:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。由于是4个broker节点,所以设置为4
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912

deleteWhen=04
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/server/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#brokerRole=MASTER

#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
brokerIP1=

 

mq-slave02 节点配置:[root@baibu-base-dev-hw-13 2m-2s-sync]# vim  /data/server/rocketmq/conf/2m-2s-sync/broker-b-s.properties

[root@baibu-base-dev-hw-13 2m-2s-sync]# vim  /data/server/rocketmq/conf/2m-2s-sync/broker-b-s.properties

brokerClusterName=rocketmq-cluster
brokerName=broker-b
brokerId=1

#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=1.1.1.13:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。由于是4个broker节点,所以设置为4
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
#listenPort=10911
listenPort=10923
haListenPort=10924

deleteWhen=04
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store-s
#commitLog 存储路径
storePathCommitLog=/data/server/rocketmq/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/server/rocketmq/store-s/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/data/server/rocketmq/store-s/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
brokerIP1=

 

主机 1.1.1.237 相关配置:

master02节点配置:[root@baibu-base-dev-hw-237 2m-2s-sync]# vim /data/server/rocketmq/conf/2m-2s-sync/broker-b.properties

[root@baibu-base-dev-hw-237 2m-2s-sync]# vim /data/server/rocketmq/conf/2m-2s-sync/broker-b.properties

brokerClusterName=rocketmq-cluster
brokerName=broker-b
brokerId=0

#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=1.1.1.13:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。由于是4个broker节点,所以设置为4
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912

deleteWhen=04
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/server/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#brokerRole=MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

brokerIP1=

 

 mq-salve01 节点配置:[root@baibu-base-dev-hw-237 2m-2s-sync]# vim /data/server/rocketmq/conf/2m-2s-sync/broker-a-s.properties

[root@baibu-base-dev-hw-237 2m-2s-sync]# vim /data/server/rocketmq/conf/2m-2s-sync/broker-a-s.properties

brokerClusterName=rocketmq-cluster
brokerName=broker-a
brokerId=1

#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=1.1.1.13:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。由于是4个broker节点,所以设置为4
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
#listenPort=10911
listenPort=10923
haListenPort=10924

deleteWhen=04
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store-s
#commitLog 存储路径
storePathCommitLog=/data/server/rocketmq/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/server/rocketmq/store-s/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/data/server/rocketmq/store-s/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

brokerIP1=

 

3、修改日志文件【2台机器同样操作】

[root@baibu-base-dev-hw-13 rocketmq]# mkdir  /data/server/rocketmq/logs

[root@baibu-base-dev-hw-13 rocketmq]# cd /data/server/rocketmq/conf/
[root@baibu-base-dev-hw-13 conf]# ls
2m-2s-async  2m-2s-sync  2m-noslave  broker.conf  logback_broker.xml  logback_filtersrv.xml  logback_namesrv.xml  logback_tools.xml

[root@baibu-base-dev-hw-13 conf]# sed -i 's#${user.home}#/data/server/rocketmq#' *.xml


4、启动参数设置

linux中nameserver的启动文件为 /data/server/rocketmq/bin/mqnamesrv 

broker启动文件为/data/server/rocketmq/bin/mqnamesrv/mqbroker

mqnamesrv 和mqbroker启动文件分别调用了runserver.sh 和runbroker.sh文件【这两个文件分别设置了nameserver和broker的启动内存】,默认nameserver启动内存为4G,最大内存4G,新生代2G,broker启动内训8G,新生代4G

5、端口设置

rocketmq启动默认使用3个端口【9876】【10911】【100912】三个端口分别代表nameserver服务器的端口,broker端口,broker ha端口。

【注意:在多master多slave模式下10911和10912是master的使用端口,但salve端口的设置和master的不同,具体约束为 slave-master>2 否则可能导致同一台服务器无法同时启动master和salve】

若启动防火墙,为了端口不被屏蔽,须将master和salve的对应端口加如到iptables,开放相应的端口。

 

6、启动nameserver

[root@baibu-base-dev-hw-13 bin]# sh  /data/server/rocketmq/bin/mqnamesrv &


13机器上master启动:
[root@baibu-base-dev-hw-13 bin]# sh /data/server/rocketmq/bin/mqbroker -c /data/server/rocketmq/conf/2m-2s-sync/broker-a.properties &
237机器上master启动:
[root@baibu-base-dev-hw-237 ~]# sh /data/server/rocketmq/bin/mqbroker -c /data/server/rocketmq/conf/2m-2s-sync/broker-b.properties &



237机器上salve启动:
[root@baibu-base-dev-hw-237 ~]# sh /data/server/rocketmq/bin/mqbroker -c /data/server/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
13机器上salve启动:
[root@baibu-base-dev-hw-13 bin]# sh /data/server/rocketmq/bin/mqbroker -c /data/server/rocketmq/conf/2m-2s-sync/broker-b-s.properties &

此时,可以用jps查看当前进程

[root@baibu-base-dev-hw-13 bin]# jps 
127123 NamesrvStartup
1162 WrapperSimpleApp
127405 BrokerStartup
127246 BrokerStartup
44847 Jps

#查看端口
[root@baibu-base-dev-hw-13 bin]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      128596/ocserv       
tcp        0      0 127.0.0.1:32001         0.0.0.0:*               LISTEN      1162/java           
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      625/zabbix_agentd   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      80264/sshd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      783/master          
tcp6       0      0 :::443                  :::*                    LISTEN      128596/ocserv       
tcp6       0      0 :::10909                :::*                    LISTEN      127246/java         
tcp6       0      0 :::10911                :::*                    LISTEN      127246/java         
tcp6       0      0 :::10912                :::*                    LISTEN      127246/java         
tcp6       0      0 :::10050                :::*                    LISTEN      625/zabbix_agentd   
tcp6       0      0 :::10921                :::*                    LISTEN      127405/java         
tcp6       0      0 :::10923                :::*                    LISTEN      127405/java         
tcp6       0      0 :::10924                :::*                    LISTEN      127405/java         
tcp6       0      0 :::9876                 :::*                    LISTEN      127123/java         
tcp6       0      0 :::22                   :::*                    LISTEN      80264/sshd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      783/master          
[root@baibu-base-dev-hw-13 bin]# 


 

 

【注意】:

启动顺序:先启动NameServer,再启动BrokerServer
停止顺序:先停止BrokerServer,再停止NameServer

【关闭命令】:

[root@baibu-base-dev-hw-13 bin]# sh mqshutdown broker

[root@baibu-base-dev-hw-13 bin]# sh mqshutdown namsrv

 

【测试发送和接收消息】

1、发送和接收消息
发送/接收消息之前,我们需要告诉客户端NameServer的地址。RocketMQ 提供了多种方式来实现这一目标。为简单起见,我们使用环境变量 NAMESRV_ADDR。
【打开两个窗口,同时执行export命令】
export NAMESRV_ADDR=localhost:9876


【窗口1 执行命令--发送消息】
>  sh   tools.sh org.apache.rocketmq.example.quickstart.Producer

SendResult [sendStatus=SEND_OK, msgId= ...

【窗口2 执行命令--接收消息】
>  sh  tools.sh org.apache.rocketmq.example.quickstart.Consumer

ConsumeMessageThread_%d Receive New Messages: [MessageExt...







 

 

rocketmq使用:【mqadmin】

#使用 ./bin/mqadmin 可以看到所有的操作选项。
[root@baibu-base-dev-hw-237 bin]# sh mqadmin

#查看集群
[root@baibu-base-dev-hw-13 bin]# sh mqadmin clusterList -n mq-console-nameserver:9876
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
rocketmq-cluster  broker-a                0     172.17.0.1:10911       V4_2_0_SNAPSHOT          0.00(0,0ms)         0.00(0,0ms)          0 431046.56 0.0312
rocketmq-cluster  broker-a                1     172.17.0.1:10923       V4_2_0_SNAPSHOT          0.00(0,0ms)         0.00(0,0ms)          0 431046.56 0.0312
rocketmq-cluster  broker-b                0     172.17.0.1:10911       V4_2_0_SNAPSHOT          0.00(0,0ms)         0.00(0,0ms)          0 431046.56 0.0312
rocketmq-cluster  broker-b                1     172.17.0.1:10923       V4_2_0_SNAPSHOT          0.00(0,0ms)         0.00(0,0ms)          0 431046.56 0.0312

# 查看集群状态
[root@baibu-base-dev-hw-13 bin]# sh mqadmin brokerStatus -c rocketmq-cluster -n mq-console-nameserver:9876
172.17.0.1:10923         bootTimestamp                   : 1551346178088
172.17.0.1:10923         brokerVersion                   : 252
172.17.0.1:10923         brokerVersionDesc               : V4_2_0_SNAPSHOT
172.17.0.1:10923         commitLogDirCapacity            : Total : 98.3 GiB, Free : 95.2 GiB.
172.17.0.1:10923         commitLogDiskRatio              : 0.0312067156006337
172.17.0.1:10923         commitLogMaxOffset              : 0
172.17.0.1:10923         commitLogMinOffset              : 0
172.17.0.1:10923         consumeQueueDiskRatio           : 0.0312067156006337
172.17.0.1:10923         dispatchBehindBytes             : 0
172.17.0.1:10923         dispatchMaxBuffer               : 0
172.17.0.1:10923         earliestMessageTimeStamp        : -1
172.17.0.1:10923         getFoundTps                     : 0.0 0.0 0.0
172.17.0.1:10923         getMessageEntireTimeMax         : 0
172.17.0.1:10923         getMissTps                      : 0.0 0.0 0.0
172.17.0.1:10923         getTotalTps                     : 0.0 0.0 0.0
172.17.0.1:10923         getTransferedTps                : 0.0 0.0 0.0
172.17.0.1:10923         msgGetTotalTodayMorning         : 0
172.17.0.1:10923         msgGetTotalTodayNow             : 0
172.17.0.1:10923         msgGetTotalYesterdayMorning     : 0
172.17.0.1:10923         msgPutTotalTodayMorning         : 0
172.17.0.1:10923         msgPutTotalTodayNow             : 0
172.17.0.1:10923         msgPutTotalYesterdayMorning     : 0
172.17.0.1:10923         pageCacheLockTimeMills          : 0
172.17.0.1:10923         pullThreadPoolQueueCapacity     : 100000
172.17.0.1:10923         pullThreadPoolQueueHeadWaitTimeMills: 0
172.17.0.1:10923         pullThreadPoolQueueSize         : 0
172.17.0.1:10923         putMessageAverageSize           : 0.0
172.17.0.1:10923         putMessageDistributeTime        : [<=0ms]:0 [0~10ms]:0 [10~50ms]:0 [50~100ms]:0 [100~200ms]:0 [200~500ms]:0 [500ms~1s]:0 [1~2s]:0 [2~3s]:0 [3~4s]:0 [4~5s]:0 [5~10s]:0 [10s~]:0 
172.17.0.1:10923         putMessageEntireTimeMax         : 0
172.17.0.1:10923         putMessageSizeTotal             : 0
172.17.0.1:10923         putMessageTimesTotal            : 1
172.17.0.1:10923         putTps                          : 0.0 0.0 0.0
172.17.0.1:10923         queryThreadPoolQueueCapacity    : 20000
172.17.0.1:10923         queryThreadPoolQueueHeadWaitTimeMills: 0
172.17.0.1:10923         queryThreadPoolQueueSize        : 0
172.17.0.1:10923         remainHowManyDataToFlush        : 0 B
172.17.0.1:10923         remainTransientStoreBufferNumbs : 2147483647
172.17.0.1:10923         runtime                         : [ 4 days, 21 hours, 11 minutes, 54 seconds ]
172.17.0.1:10923         sendThreadPoolQueueCapacity     : 10000
172.17.0.1:10923         sendThreadPoolQueueHeadWaitTimeMills: 0
172.17.0.1:10923         sendThreadPoolQueueSize         : 0
172.17.0.1:10923         startAcceptSendRequestTimeStamp : 0
172.17.0.1:10911         bootTimestamp                   : 1551346119362
172.17.0.1:10911         brokerVersion                   : 252
172.17.0.1:10911         brokerVersionDesc               : V4_2_0_SNAPSHOT
172.17.0.1:10911         commitLogDirCapacity            : Total : 98.3 GiB, Free : 95.2 GiB.
172.17.0.1:10911         commitLogDiskRatio              : 0.0312067156006337
172.17.0.1:10911         commitLogMaxOffset              : 0
172.17.0.1:10911         commitLogMinOffset              : -1
172.17.0.1:10911         consumeQueueDiskRatio           : 0.0312067156006337
172.17.0.1:10911         dispatchBehindBytes             : 0
172.17.0.1:10911         dispatchMaxBuffer               : 0
172.17.0.1:10911         earliestMessageTimeStamp        : -1
172.17.0.1:10911         getFoundTps                     : 0.0 0.0 0.0
172.17.0.1:10911         getMessageEntireTimeMax         : 0
172.17.0.1:10911         getMissTps                      : 0.0 0.0 0.0
172.17.0.1:10911         getTotalTps                     : 0.0 0.0 0.0
172.17.0.1:10911         getTransferedTps                : 0.0 0.0 0.0
172.17.0.1:10911         msgGetTotalTodayMorning         : 0
172.17.0.1:10911         msgGetTotalTodayNow             : 0
172.17.0.1:10911         msgGetTotalYesterdayMorning     : 0
172.17.0.1:10911         msgPutTotalTodayMorning         : 0
172.17.0.1:10911         msgPutTotalTodayNow             : 0
172.17.0.1:10911         msgPutTotalYesterdayMorning     : 0
172.17.0.1:10911         pageCacheLockTimeMills          : 0
172.17.0.1:10911         pullThreadPoolQueueCapacity     : 100000
172.17.0.1:10911         pullThreadPoolQueueHeadWaitTimeMills: 0
172.17.0.1:10911         pullThreadPoolQueueSize         : 0
172.17.0.1:10911         putMessageAverageSize           : 0.0
172.17.0.1:10911         putMessageDistributeTime        : [<=0ms]:0 [0~10ms]:0 [10~50ms]:0 [50~100ms]:0 [100~200ms]:0 [200~500ms]:0 [500ms~1s]:0 [1~2s]:0 [2~3s]:0 [3~4s]:0 [4~5s]:0 [5~10s]:0 [10s~]:0 
172.17.0.1:10911         putMessageEntireTimeMax         : 0
172.17.0.1:10911         putMessageSizeTotal             : 0
172.17.0.1:10911         putMessageTimesTotal            : 1
172.17.0.1:10911         putTps                          : 0.0 0.0 0.0
172.17.0.1:10911         queryThreadPoolQueueCapacity    : 20000
172.17.0.1:10911         queryThreadPoolQueueHeadWaitTimeMills: 0
172.17.0.1:10911         queryThreadPoolQueueSize        : 0
172.17.0.1:10911         remainHowManyDataToFlush        : 0 B
172.17.0.1:10911         remainTransientStoreBufferNumbs : 2147483647
172.17.0.1:10911         runtime                         : [ 4 days, 21 hours, 12 minutes, 53 seconds ]
172.17.0.1:10911         sendThreadPoolQueueCapacity     : 10000
172.17.0.1:10911         sendThreadPoolQueueHeadWaitTimeMills: 0
172.17.0.1:10911         sendThreadPoolQueueSize         : 0
172.17.0.1:10911         startAcceptSendRequestTimeStamp : 0


#新建topic 
[root@baibu-base-dev-hw-13 bin]# sh mqadmin updateTopic -b mq-console-nameserver:10911 -n mq-console-nameserver:9876 -t lzt-0305
create topic to mq-console-nameserver:10911 success.
TopicConfig [topicName=lzt-0305, readQueueNums=8, writeQueueNums=8, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false]

#或者【这两个命令都可以,也就是说-b broker主机或者-c集群名必须指定一个】
[root@baibu-base-dev-hw-13 bin]# sh mqadmin updateTopic -c rocketmq-cluster -n mq-console-nameserver:9876 -t test-0305
create topic to 172.17.0.1:10911 success.
TopicConfig [topicName=test-0305, readQueueNums=8, writeQueueNums=8, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false]

#查看topic
[root@baibu-base-dev-hw-13 bin]# sh mqadmin topicList -n mq-console-nameserver:9876
lzytest
rocketmq-cluster
lzt-0305
broker-b
BenchmarkTest
OFFSET_MOVED_EVENT
broker-a
test-0305
TBW102
SELF_TEST_TOPIC

#查看lzt-0305 这个topic队列分布的详细信息
[root@baibu-base-dev-hw-13 bin]# sh mqadmin topicStatus -n mq-console-nameserver:9876 -t lzt-0305
#Broker Name                      #QID  #Min Offset           #Max Offset             #Last Updated
broker-a                          0     0                     0                       
broker-a                          1     0                     0                       
broker-a                          2     0                     0                       
broker-a                          3     0                     0                       
broker-a                          4     0                     0                       
broker-a                          5     0                     0                       
broker-a                          6     0                     0                       
broker-a                          7     0                     0       

#可以看到默认情况下队列都被分到broker-a上面了,比如我们要创建更多的队列,那么rocketmq会自动的均衡分布到集群所有的broker中

【help】:对于每个命令可以用的时候现查,比如topicStatus这个具体怎么用,可以执行: bin/mqadmin help topicStatus 或者 bin/mqadmin topicStatus -h 查看详细的参数,然后根据需要使用就可以了



 

* RocketMQ-Console图形化管理控制台安装

#使用git命令下载项目源码,由于我们仅需要rocketmq-console,故下载此项目对应分支即可。
git clone -b release-rocketmq-console-1.0.0 https://github.com/apache/rocketmq-externals.git
#进入项目文件夹并修改配置文件(中文注释是我添加,为方便解释,请删除,不然打包报错)。

cd rocketmq-externals/rocketmq-console/
vi src/main/resources/application.properties 
#管理后台访问上下文路径,默认为空,如果填写,一定要前面加“/”,后面不要加,否则启动报错
server.contextPath=/rocketmq
#访问端口
server.port=8080
#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
#logback配置文件路径
logging.config=classpath:logback.xml
#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
#Name Server地址,修改成你自己的服务地址
rocketmq.config.namesrvAddr=10.0.74.198:9876;10.0.74.199:9876
#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
rocketmq.config.isVIPChannel=
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true


#Name Server地址默认为空,注释说可以在启动项目后在后台配置,经测试,后台配置切换失败,有报错,所以打包前需修改配置文件明确给出Name Server地址,或者启动服务的时候给出rocketmq.config.namesrvAddr参数值。

*  将项目打成jar包,并运行jar文件。

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar  -xf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 maven-3.3.9


vim /etc/profile
export MAVEN_HOME=/data/server/maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin




mvn clean package -Dmaven.test.skip=true
nohup java -jar target/rocketmq-console-ng-1.0.0.jar &
#如果配置文件没有填写Name Server
nohup java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr='10.0.74.198:9876;10.0.74.199:9876' &

启动成功后,访问地址http://localhost:8080, 即可进入管理后台操作。


 

 

*问题总结:

1、默认不配置brokerIP1和brokerIP2时,都会根据当前网卡选择一个IP使用,而当你的机器有多块网卡时,很有可能会有问题,导致连不上broker。


【 brokerIP1 当前broker监听的IP 
   brokerIP2 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。】
解决方法:
在配置文件增加 brokerIP1=本机内网

 

 

 

参考:https://www.cnblogs.com/kevingrace/p/9015836.html

 

你可能感兴趣的:(rocketmq)