RocketMQ 是一个分布式消息中间件,使用 Docker 可以方便地进行部署。
拉取 RocketMQ 镜像
首先,拉取 RocketMQ 的官方镜像:
docker pull apache/rocketmq:latest
部署 NameServer
创建数据卷目录:
mkdir -p /usr/local/rocketmq/data/namesrv/logs /usr/local/rocketmq/data/namesrv/store
启动 NameServer 容器:
docker run -d --restart=always --name rmqnamesrv --privileged=true -p 9876:9876 -v /usr/local/rocketmq/data/namesrv/logs:/root/logs -v /usr/local/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" apache/rocketmq sh mqnamesrv
部署 Broker
创建数据卷目录:
mkdir -p /usr/local/rocketmq/data/broker/logs /usr/local/rocketmq/data/broker/store /usr/local/rocketmq/conf
创建配置文件:
vi /usr/local/rocketmq/conf/broker.conf
配置文件内容示例:
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerIP1=192.168.27.129
diskMaxUsedSpaceRatio=95
启动 Broker 容器:
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv --privileged=true -p 10911:10911 -p 10912:10912 -p 10909:10909 -v /usr/local/rocketmq/data/broker/logs:/root/logs -v /usr/local/rocketmq/data/broker/store:/root/store -v /usr/local/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" -e "MAX_POSSIBLE_HEAP=200000000" apache/rocketmq sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
部署 RocketMQ 控制台
拉取控制台镜像:
docker pull styletang/rocketmq-console-ng
启动控制台容器:
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.27.129:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8081:8080 --ulimit nofile=1024 styletang/rocketmq-console-ng:latest
启动服务
启动 NameServer:
docker start rmqnamesrv
启动 Broker:
docker start rmqbroker
访问控制台:
在浏览器中访问 http://<你的IP>:8081 查看 RocketMQ 控制台