組件版本

系統:Windows 11 

Docker version 28.5.1, build e180ab8

WSL 2

步驟

步驟 1:拉取所需鏡像

打開 PowerShell(或 CMD),執行以下命令拉取 RocketMQ 核心鏡像和管理控制枱鏡像:

# 拉取RocketMQ核心鏡像(包含NameServer和Broker)
docker pull apache/rocketmq:5.3.3

# 拉取RocketMQ管理控制枱鏡像
docker pull styletang/rocketmq-console-ng:latest
步驟 2:創建本地目錄與配置文件

為避免容器內數據丟失,需在 Windows 本地創建目錄存儲日誌、數據及配置文件(路徑可自定義,這裏以 D:\home\rocketmq 為例)。

1 創建目錄

在 PowerShell 中執行:

# 創建NameServer和Broker的日誌、數據目錄
mkdir -p D:\home\rocketmq\namesrv\logs
mkdir -p D:\home\rocketmq\namesrv\store
mkdir -p D:\home\rocketmq\broker\logs
mkdir -p D:\home\rocketmq\broker\store
mkdir -p D:\home\rocketmq\broker\conf

也可手動在資源管理器中創建上述目錄(路徑:D:\home\rocketmq\...)。

2 配置 Broker

在 D:\home\rocketmq\broker\conf 目錄下創建 broker.conf 文件(可用記事本編輯),內容如下:

# Broker名稱(集羣模式統一)
brokerName = broker-a
# Broker ID(0為主節點)
brokerId = 0
# NameServer地址(啓動時會通過環境變量覆蓋,此處為默認)
namesrvAddr = 127.0.0.1:9876
# Broker對外暴露的IP(**關鍵**:本地測試填宿主機IP,通常為127.0.0.1;若需其他設備訪問,填Windows本機IP,如192.168.1.10)
brokerIP1 = 127.0.0.1
# 存儲路徑(容器內路徑,映射到本地目錄)
storePathRootDir = /home/store
storePathCommitLog = /home/store/commitlog
storePathConsumeQueue = /home/store/consumequeue
storePathIndex = /home/store/index
storeCheckpoint = /home/store/checkpoint
abortFile = /home/store/abort
步驟 3:創建 Docker 網絡(推薦)

為讓 NameServer、Broker、控制枱通過容器名通信,創建專用網絡:

docker network create rocketmq-network
步驟 4:啓動 RocketMQ 組件

按順序啓動 NameServer、Broker、管理控制枱(需保持 PowerShell 窗口打開,或使用 -d 後台運行)。

1. 啓動 NameServer

NameServer 是路由註冊中心,執行:

docker run -d `
  --name rmqnamesrv `
  --network rocketmq-network `
  -p 9876:9876 `
  -v D:\home\rocketmq\namesrv\logs:/root/logs `
  -v D:\home\rocketmq\namesrv\store:/root/store `
  apache/rocketmq:5.3.3 `
  sh mqnamesrv
  • 參數説明:
  • -d:後台運行容器。
  • --name rmqnamesrv:容器命名為 rmqnamesrv。
  • --network:加入專用網絡,方便組件通信。
  • -p 9876:9876:映射 NameServer 默認端口(宿主機端口:容器端口)。
  • -v:將 Windows 本地目錄映射到容器內,持久化日誌和數據(注意 Windows 路徑用 D:\... 格式)。

2. 啓動 Broker

Broker 是消息存儲核心,需關聯 NameServer,執行:

docker run -d `
  --name rmqbroker `
  --network rocketmq-network `
  -p 10911:10911 `  # 客户端通信端口
  -p 10909:10909 `  # 主從同步端口
  -v D:\home\rocketmq\broker\logs:/root/logs `
  -v D:\home\rocketmq\broker\store:/root/store `
  -v D:\home\rocketmq\broker\conf\broker.conf:/home/rocketmq/conf/broker.conf `  # 映射配置文件
  -e "NAMESRV_ADDR=rmqnamesrv:9876" `  # 關聯NameServer(同一網絡用容器名)
  apache/rocketmq:5.3.3 `
  sh mqbroker -c /home/rocketmq/conf/broker.conf  # 指定配置文件啓動

3. 啓動管理控制枱(可選)

控制枱用於可視化管理(查看消息、隊列等),執行:

docker run -d `
  --name rmqconsole `
  --network rocketmq-network `
  -p 8080:8080 `  # 控制枱訪問端口
  -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" `
  styletang/rocketmq-console-ng:latest

步驟 5:驗證部署

  1. 檢查容器狀態:
    在 PowerShell 中執行 docker ps,若看到 rmqnamesrvrmqbrokerrmqconsole 三個容器狀態為 Up,則啓動成功。
  2. 訪問管理控制枱:
    打開瀏覽器,輸入 http://localhost:8080,若能看到控制枱頁面,且左側 “NameServer Address” 顯示 rmqnamesrv:9876,則部署完成。

Windows下使用Docker Desktop安裝rocketmq_管理控制

常見問題與解決

  1. 容器啓動失敗(日誌報錯 “無權限”)
    檢查 Windows 目錄權限,確保 Docker Desktop 有訪問 C:\opt\rocketmq 的權限(右鍵目錄→“屬性”→“安全”→添加 “Users” 權限)。
  2. 控制枱無法連接 NameServer
  • 確認 rmqconsole 與 rmqnamesrv 在同一網絡(rocketmq-network)。
  • 檢查環境變量 NAMESRV_ADDR 是否正確(rmqnamesrv:9876)。
  1. 本地客户端連接 Broker 失敗
  • 確認 broker.conf 中 brokerIP1 為 127.0.0.1(本地測試)或 Windows 本機 IP(如 192.168.1.10,可通過 ipconfig 查看)。
  • 檢查 Windows 防火牆是否開放 987610911 端口(允許入站規則)。