概述

RocketMQ是阿里巴巴开源的分布式消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。它是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式等特点。

安装

RocketMQ需要安装 NameServerBroker 两个核心组件。
(1) NameServer:前置负责服务发现和路由管理,维护着所有 Broker 的信息,并为客户提供消息发送和消费的路由信息。
(2)Broker:负责消息的存储、转发和消费。它存储实际的消息队列,并执行消息的生产和消费。

NameServer

1.拉取 RocketMQ 最新版镜像

1
docker pull rocketmqinc/rocketmq

2.创建容器数据挂载目录

1
mkdir -p /home/xlb/tool/rocketmq/logs /home/xlb/tool/rocketmq/store

3.构建容器并启动

1
docker run -d --name rmqnamesrv -p 9876:9876  -v  /home/xlb/tool/rocketmq/logs:/root/logs  -v /home/xlb/tool/rocketmq/store:/root/store  -e "MAX_POSSIBLE_HEAP=100000000"  rocketmqinc/rocketmq sh mqnamesrv

Broker

1.创建Broker数据存储路径

1
mkdir -p /home/xlb/tool/rocketmq/broker/logs /home/xlb/tool/rocketmq/broker/conf /home/xlb/tool/rocketmq/broker/store

2.创建Broker配置文件

1
2
cd /data/rocketmqbroker/conf
vim broker.conf

3.配置文件内容,注意修改IP为自己IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 所属集群名字
brokerClusterName=DefaultCluster
# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a
# 0 表示 Master,> 0 表示 Slave
brokerId=0
# nameServer地址,分号分割
namesrvAddr=192.168.32.128:9876
#producer.setVipChannelEnabled=false
brokerIP1=192.168.32.128

# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog 每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 限制的消息大小
maxMessageSize=65536
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=128

4.构建容器并启动

1
docker run -d --name rmqbroker  --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909  -v /home/xlb/tool/rocketmq/broker/logs:/root/logs -v /home/xlb/tool/rocketmq/broker/store:/root/store  -v  /home/xlb/tool/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf  -e "NAMESRV_ADDR=namesrv:9876"  -e "MAX_POSSIBLE_HEAP=200000000"  rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

RocketMQ-Console可视化界面

1.拉取rocketmq-console镜像

1
docker pull pangliang/rocketmq-console-ng

2.构建容器并启动

1
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.32.128:9876 -Dcom.rocketmqsendMessageWithVIPChannel=false"  -p 9999:8080  pangliang/rocketmq-console-ng

3.访问http://192.168.32.128:9999/,查看可视化界面。