docker-compose.yml
注意:啟動 RocketMQ Server + Broker + Console 至少需要 2G 內存
version: '3.5'
services:
rmqnamesrv:
image: foxiswho/rocketmq:server
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/logs:/opt/logs
- ./data/store:/opt/store
networks:
rmq:
aliases:
- rmqnamesrv
rmqbroker:
image: foxiswho/rocketmq:broker
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
volumes:
- ./data/logs:/opt/logs
- ./data/store:/opt/store
- ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: mqbroker -c /etc/rocketmq/broker.conf
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqbroker
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 8080:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqconsole
networks:
rmq:
name: rmq
driver: bridge
broker.conf
RocketMQ Broker 需要一個配置文件,按照上面的 Compose 配置,我們需要在 ./data/brokerconf/ 目錄下創建一個名為 broker.conf 的配置文件,內容如下:
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
所屬集群名字
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.0.253
在發送消息時,自動創建服務器不存在的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
RocketMQ 控制台
訪問 http://rmqIP:8080 登入控制台