文档
Docker Compose 安装 RocketMQ
# docker hub
services:
namesrv:
image: apache/rocketmq:5.3.4
container_name: rmqnamesrv
ports:
- "9876:9876"
networks:
- rocketmq
command: sh mqnamesrv
broker:
image: apache/rocketmq:5.3.4
container_name: rmqbroker
ports:
- "10909:10909"
- "10911:10911"
- "10912:10912"
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
depends_on:
- namesrv
networks:
- rocketmq
command: sh mqbroker
proxy:
image: apache/rocketmq:5.3.4
container_name: rmqproxy
networks:
- rocketmq
depends_on:
- broker
- namesrv
ports:
- "8080:8080"
- "8081:8081"
restart: on-failure
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
command: sh mqproxy
networks:
rocketmq:
driver: bridge
# 国内镜像
services:
namesrv:
image: registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/apache-rocketmq:5.3.4
container_name: rmqnamesrv
ports:
- "9876:9876"
networks:
- rocketmq
command: sh mqnamesrv
broker:
image: registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/apache-rocketmq:5.3.4
container_name: rmqbroker
ports:
- "10909:10909"
- "10911:10911"
- "10912:10912"
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
depends_on:
- namesrv
networks:
- rocketmq
command: sh mqbroker
proxy:
image: registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/apache-rocketmq:5.3.4
container_name: rmqproxy
networks:
- rocketmq
depends_on:
- broker
- namesrv
ports:
- "8080:8080"
- "8081:8081"
restart: on-failure
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
command: sh mqproxy
networks:
rocketmq:
driver: bridge
Docker 安装 RocketMQ
创建网络
# 创建 RocketMQ 网络
docker network create rocketmq
名字服务器 NameServer
# docker hub
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq apache/rocketmq:5.3.4 sh mqnamesrv
# 国内镜像
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/apache-rocketmq:5.3.4 sh mqnamesrv
代理服务器 Broker
# docker hub
# 配置 Broker 的IP地址
echo "brokerIP1=127.0.0.1" > broker.conf
# 启动 Broker 和 Proxy
docker run -d \
--name rmqbroker \
--network rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v ./broker.conf:/home/rocketmq/rocketmq-5.3.4/conf/broker.conf \
apache/rocketmq:5.3.4 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.4/conf/broker.conf
# 国内镜像
# 配置 Broker 的IP地址
echo "brokerIP1=127.0.0.1" > broker.conf
# 启动 Broker 和 Proxy
docker run -d \
--name rmqbroker \
--network rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v ./broker.conf:/home/rocketmq/rocketmq-5.3.4/conf/broker.conf \
registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/apache-rocketmq:5.3.4 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.4/conf/broker.conf
Linux 安装 RocketMQ
下载 RocketMQ
# 下载、解压 5.3.4
wget https://archive.apache.org/dist/rocketmq/5.3.4/rocketmq-all-5.3.4-bin-release.zip
ls -lh rocketmq-all-5.3.4-bin-release.zip
unzip rocketmq-all-5.3.4-bin-release.zip
ls -lh rocketmq-all-5.3.4-bin-release
# 下载、解压 4.9.8
wget https://archive.apache.org/dist/rocketmq/4.9.8/rocketmq-all-4.9.8-bin-release.zip
ls -lh rocketmq-all-4.9.8-bin-release.zip
unzip rocketmq-all-4.9.8-bin-release.zip
ls -lh rocketmq-all-4.9.8-bin-release
配置 RocketMQ
RocketMQ 需要 Java 1.8+ 环境才能运行,需要配置 环境变量 JAVA_HOME
配置 RocketMQ 名字服务器 NameServer
| 命令 |
介绍 |
systemctl status rocketmq-nameserver.service --no-pager -l |
查看 RocketMQ 状态 |
systemctl start rocketmq-nameserver.service |
启动 RocketMQ |
systemctl stop rocketmq-nameserver.service |
停止 RocketMQ |
systemctl restart rocketmq-nameserver.service |
重启 RocketMQ |
systemctl is-enabled rocketmq-nameserver.service |
查看 RocketMQ 开启自启状态 |
systemctl enable rocketmq-nameserver.service |
打开 RocketMQ 开启自启 |
systemctl disable rocketmq-nameserver.service |
关闭 RocketMQ 开启自启 |
# 配置 RocketMQ 5.3.4 NameServer Linux Service
cat <<EOF | tee /lib/systemd/system/rocketmq-nameserver.service
[Unit]
After=syslog.target
[Service]
# TODO 配置 JAVA_HOME 路径
Environment="JAVA_HOME=/srv/dragonwell-8.27.26"
ExecStart=/srv/rocketmq-all-5.3.4-bin-release/bin/mqnamesrv
ExecStop=/srv/rocketmq-all-5.3.4-bin-release/bin/mqshutdown namesrv
Restart=always
RestartSec=10
StartLimitInterval=60s
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
EOF
# 配置 RocketMQ 4.9.8 NameServer Linux Service
cat <<EOF | tee /lib/systemd/system/rocketmq-nameserver.service
[Unit]
After=syslog.target
[Service]
# TODO 配置 JAVA_HOME 路径
Environment="JAVA_HOME=/srv/dragonwell-8.27.26"
ExecStart=/srv/rocketmq-all-4.9.8-bin-release/bin/mqnamesrv
ExecStop=/srv/rocketmq-all-4.9.8-bin-release/bin/mqshutdown namesrv
Restart=always
RestartSec=10
StartLimitInterval=60s
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
EOF
配置 RocketMQ 代理服务器 Broker
| 命令 |
介绍 |
systemctl status rocketmq-broker.service --no-pager -l |
查看 RocketMQ 状态 |
systemctl start rocketmq-broker.service |
启动 RocketMQ |
systemctl stop rocketmq-broker.service |
停止 RocketMQ |
systemctl restart rocketmq-broker.service |
重启 RocketMQ |
systemctl is-enabled rocketmq-broker.service |
查看 RocketMQ 开启自启状态 |
systemctl enable rocketmq-broker.service |
打开 RocketMQ 开启自启 |
systemctl disable rocketmq-broker.service |
关闭 RocketMQ 开启自启 |
# 配置 RocketMQ 5.3.4 Broker Linux Service
cat <<EOF | tee /lib/systemd/system/rocketmq-broker.service
[Unit]
After=syslog.target
[Service]
# TODO 配置 JAVA_HOME 路径
Environment="JAVA_HOME=/srv/dragonwell-8.27.26"
ExecStart=/srv/rocketmq-all-5.3.4-bin-release/bin/mqbroker -n localhost:9876
ExecStop=/srv/rocketmq-all-5.3.4-bin-release/bin/mqshutdown broker
Restart=always
RestartSec=10
StartLimitInterval=60s
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
EOF
# 配置 RocketMQ 4.9.8 Broker Linux Service
cat <<EOF | tee /lib/systemd/system/rocketmq-broker.service
[Unit]
After=syslog.target
[Service]
# TODO 配置 JAVA_HOME 路径
Environment="JAVA_HOME=/srv/dragonwell-8.27.26"
ExecStart=/srv/rocketmq-all-4.9.8-bin-release/bin/mqbroker -n localhost:9876
ExecStop=/srv/rocketmq-all-4.9.8-bin-release/bin/mqshutdown broker
Restart=always
RestartSec=10
StartLimitInterval=60s
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
EOF
日志
| 日志 |
说明 |
~/logs/rocketmqlogs/broker.log |
|
~/logs/rocketmqlogs/broker_default.log |
|
~/logs/rocketmqlogs/commercial.log |
|
~/logs/rocketmqlogs/filter.log |
|
~/logs/rocketmqlogs/lock.log |
|
~/logs/rocketmqlogs/namesrv.log |
|
~/logs/rocketmqlogs/namesrv_default.log |
|
~/logs/rocketmqlogs/protection.log |
|
~/logs/rocketmqlogs/remoting.log |
|
~/logs/rocketmqlogs/stats.log |
|
~/logs/rocketmqlogs/store.log |
|
~/logs/rocketmqlogs/storeerror.log |
|
~/logs/rocketmqlogs/transaction.log |
|
~/logs/rocketmqlogs/watermark.log |
|
服务说明
# 查看 名字服务器 NameServer 状态:正常运行
# 提示下列内容,说明正常运行
# The Name Server boot success. serializeType=JSON
systemctl status rocketmq-nameserver.service --no-pager -l
# 查看示例
root@localhost:~# systemctl status rocketmq-nameserver.service --no-pager -l
* rocketmq-nameserver.service
Loaded: loaded (/usr/lib/systemd/system/rocketmq-nameserver.service; disabled; preset: enabled)
Active: active (running) since Thu 2025-12-25 14:46:58 CST; 1min 40s ago
Invocation: 3e04a074d0454dd98c72c9658624873d
Main PID: 4033 (mqnamesrv)
Tasks: 32 (limit: 9458)
Memory: 80.6M (peak: 143.5M, swap: 112.9M, swap peak: 114.6M)
CPU: 2.492s
CGroup: /system.slice/rocketmq-nameserver.service
|-4033 /bin/sh /srv/rocketmq-all-4.9.8-bin-release/bin/mqnamesrv
|-4037 sh /srv/rocketmq-all-4.9.8-bin-release/bin/runserver.sh org.apache.rocketmq.namesrv.NamesrvStartup
`-4057 /srv/dragonwell-8.27.26/bin/java -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:-UseLargePages -cp ".:/srv/rocketmq-all-4.9.8-bin-release/bin/../conf:/srv/rocketmq-all-4.9.8-bin-release/bin/../lib/*:" org.apache.rocketmq.namesrv.NamesrvStartup
Dec 25 14:46:58 localhost.localdomain systemd[1]: Started rocketmq-nameserver.service.
Dec 25 14:46:58 localhost.localdomain mqnamesrv[4057]: OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Dec 25 14:46:58 localhost.localdomain mqnamesrv[4057]: OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Dec 25 14:46:59 localhost.localdomain mqnamesrv[4057]: The Name Server boot success. serializeType=JSON
root@localhost:~#
# 查看 代理服务器 Broker 状态:正常运行
# 提示下列内容,说明正常运行
# The broker[localhost.localdomain, 172.25.25.203:10911] boot success. serializeType=JSON and name server is localhost:9876
systemctl status rocketmq-broker.service --no-pager -l
# 查看示例
root@localhost:~# systemctl status rocketmq-broker.service --no-pager -l
* rocketmq-broker.service
Loaded: loaded (/usr/lib/systemd/system/rocketmq-broker.service; disabled; preset: enabled)
Active: active (running) since Thu 2025-12-25 14:47:17 CST; 1min 34s ago
Invocation: ea125c2e0d5b4e4ea3ae8d6394ef42cf
Main PID: 4541 (mqbroker)
Tasks: 88 (limit: 9458)
Memory: 7.1G (peak: 7.4G, swap: 7.7M, swap peak: 17M)
CPU: 11.414s
CGroup: /system.slice/rocketmq-broker.service
|-4541 /bin/sh /srv/rocketmq-all-4.9.8-bin-release/bin/mqbroker -n localhost:9876
|-4545 sh /srv/rocketmq-all-4.9.8-bin-release/bin/runbroker.sh org.apache.rocketmq.broker.BrokerStartup -n localhost:9876
`-4568 /srv/dragonwell-8.27.26/bin/java -server -Xms8g -Xmx8g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking -cp ".:/srv/rocketmq-all-4.9.8-bin-release/bin/../conf:/srv/rocketmq-all-4.9.8-bin-release/bin/../lib/*:" org.apache.rocketmq.broker.BrokerStartup -n localhost:9876
Dec 25 14:47:17 localhost.localdomain systemd[1]: Started rocketmq-broker.service.
Dec 25 14:47:23 localhost.localdomain mqbroker[4568]: The broker[localhost.localdomain, 172.25.25.203:10911] boot success. serializeType=JSON and name server is localhost:9876
root@localhost:~#