目录
1. Docker安装RocketMQ镜像
1.1 搜索RocketMQ镜像
命令:
docker search rocketmq
我们这里使用rocketmqinc/rocketmq镜像
1.2 下载rocketmq镜像
命令:
docker pull rocketmqinc/rocketmq
- 下载版本为rocketmqinc/rocketmq:latest版本
- 此镜像有server和broker,可直接使用
1.3 下载Rocketmq控制台
命令:
docker pull styletang/rocketmq-console-ng
1.4 启动服务
RocketMQ有两个服务需要启动: namesrv和broker
1.4.1 启动namesrv服务
docker run -d -p 9876:9876
-v /opt/rocketmq/data/namesrv/logs:/root/logs \
-v /opt/rocketmq/data/namesrv/store:/root/store \
--name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq:latest sh mqnamesrv
- -p 指定端口,前面为外部访问端口,后面为宿主机访问端口
- -v 挂载目录,将docker内目录和linux目录进行挂载
- –name 指定当前容器名称
- -e 指定配置
- sh mqnamesrv 启动容器内部指令
1.4.2 启动broker服务
- 获取配置文件
- 可先直接启动broker,然后将其中的配置文件复制出来
-docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
- 复制到/usr/broker.conf位置 - 修改配置文件broker.conf
- 添加一下配置(更多配置内容见文章末尾)
brokerIP1=宿主机IP
namesrvAddr=宿主机IP:9876
- 启动broker服务
docker run -d -p 10911:10911 -p 10909:10909 \
-v /opt/rocketmq/data/broker/logs:/root/logs \
-v /opt/rocketmq/data/broker/store:/root/store \
-v /usr/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
--name rmqbroker --link rmqnamesrv:namesrv \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq:latest \
sh mqbroker -n 192.168.126.130:9876 \
-c /opt/rocketmq-4.4.0/conf/broker.conf autoCreateTopicEnable=true
挂载配置文件:
-v /usr/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
指定宿主机ip
-n 192.168.126.130:9876
启用配置文件
-c /opt/rocketmq-4.4.0/conf/broker.conf
1.4.3 启动RocketMQ控制台
docker run --name rocketmq-console \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.21.152:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8081:8080 -t styletang/rocketmq-console-ng
访问控制台: http://虚拟机IP:8081
如果有一个集群说明启动成功, 地址需要显示宿主机IP地址
broker.conf配置文件信息
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIp=127.0.0.1
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\rocketMqTestData\\store
#commitLog 存储路径
storePathCommitLog=D:\\rocketMqTestData\\store\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\rocketMqTestData\\store\\consumequeue
#消息索引存储路径
storePathIndex=D:\\rocketMqTestData\\store\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\rocketMqTestData\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\rocketMqTestData\\store\\abort
#限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
#Broker 的角色
brokerRole=ASYNC_MASTER
#刷盘方式
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageTreadPoolNums=128
#拉消息线程池数量
pullMessageTreadPoolNums=128