-
创建一个新的网络连接
docker network create rocketmq-net
-
拉取镜像
docker pull apache/rocketmq:5.1.4
-
创建rocketmq-namesrv容器
docker run -d --name rocketmq-namesrv --network rocketmq-net -e "JAVA_OPTS=-Drocketmq.namesrv.bindIP=0.0.0.0" -p 9876:9876 apache/rocketmq:5.1.4 sh mqnamesrv
-
启动状态:docker logs -f rocketmq-namesrv,出现以下就是成功的
. -
添加需要映射的文件broker.conf,修改brokerIP1为你电脑IP
# 所属集群名字 brokerClusterName=DefaultCluster # broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a, # 在 broker-b.properties 使用: broker-b brokerName=broker-a # 0 表示 Master,> 0 表示 Slave brokerId=0 # nameServer地址,分号分割 # namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 # 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed # 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP brokerIP1=192.168.100.105 # 在发送消息时,自动创建服务器不存在的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 # 存储路径 # storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store # commitLog 存储路径 # storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog # 消费队列存储 # storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue # 消息索引存储路径 # storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index # checkpoint 文件存储路径 # storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint # abort 文件存储路径 # abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort # 限制的消息大小 maxMessageSize=65536 # flushCommitLogLeastPages=4 # flushConsumeQueueLeastPages=2 # flushCommitLogThoroughInterval=10000 # flushConsumeQueueThoroughInterval=60000 # Broker 的角色 # - ASYNC_MASTER 异步复制Master # - SYNC_MASTER 同步双写Master # - SLAVE brokerRole=ASYNC_MASTER # 刷盘方式 # - ASYNC_FLUSH 异步刷盘 # - SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH # 发消息线程池数量 # sendMessageThreadPoolNums=128 # 拉消息线程池数量 # pullMessageThreadPoolNums=128
-
启动broker
正常启动:docker run -d --name rocketmq-broker --network rocketmq-net -p 10911:10911 -p 10909:10909 -e "NAMESRV_ADDR=rmqnamesrv:9876" -v D:\\environment\docker\rocketMQ\broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf apache/rocketmq:5.1.4 sh mqbroker
D:\\environment\docker\rocketMQ\broker.conf
是宿主机的路径,即Windows电脑里的路径
/home/rocketmq/rocketmq-5.1.4/conf/broker.conf
这是docker里的路径- 若出现/bin/runbroker.sh: line 90: 25991 Killed $JAVA ${JAVA_OPT} $@,则是内存问题,需要修改内存
docker run -d --name rocketmq-broker --network rocketmq-net -p 10911:10911 -p 10909:10909 -e "NAMESRV_ADDR=rmqnamesrv:9876" -e "JAVA_OPT_EXT=-Xms128m -Xmx128m -Xmn128m" -e "MAX_POSSIBLE_HEAP=200000000" -v D:\\environment\docker\rocketMQ\broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf apache/rocketmq:5.1.4 sh mqbroker
- 修改后,如果发现docker使用出现500的问题,大概率是docker内存溢出
-
查看Windows查看docker信息,docker info,我这个已经是8G的,之前是2G,看自己电脑内存改。
-
修改方式:windows路径栏输入:%UserProfile%,找到.wslconfig文件,没有的话自己加一下,修改内存大小
# 设置在wsl2上运行 [wsl2] # 设置分配给WSL VM 的内存大小(默认是1/2的电脑内存) memory=8GB # 设置要分配给 WSL 2 VM 的逻辑处理器数(默认和Windows 上相同数量的逻辑处理器) processors=10 ```