一 概述
RocketMQ主要是由Producer,Broker,Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。
Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的Broker。
Message Queue用于存储消息的物理地址,每个Topic中的消息地址存储于多个Message Queue中。
ConsumerGroup由多个Consumer实例构成。
二 Docker搭建RocketMQ
1. 获取RocketMQ镜像
docker search rocketmq
docker pull foxiswho/rocketmq
2. 启动NameServer
docker run -d --name rmqnamesrver -e "JAVA_OPT=-Xms512M -Xmx512M -Xmn128m" -p 9876:9876 --restart always foxiswho/rocketmq sh mqnamesrv
3. 启动Broker
创建挂载目录
mkdir -p /data/docker/rocketmq/logs
mkdir -p /data/docker/rocketmq/store
chmod -R 777 /data启动Broker
docker run -d -v /data/docker/rocketmq/logs:/home/rocketmq/logs \
-v /data/docker/rocketmq/store:/home/rocketmq/store \
--name rmqbroker -e "NAMESRV_ADDR=[namserver ip地址]:9876" \
-e "JAVA_OPT=-Xms512M -Xmx512M -Xmn128m" \
-p 10911:10911 --restart always foxiswho/rocketmq sh mqbroker \
-c /home/rocketmq/rocketmq-4.5.2/conf/broker.conf
启动RocketMQ的控制台
docker run -d --name rmqconsole -e "JAVA_OPTS=-Drocketmq.namesrv.addr=[namserver ip地址]:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8180:8080 -t styletang/rocketmq-console-ng --restart always
4 配置NameServer的IP
保证:sh mqbroker -c 后的路径[/home/rocketmq/rocketmq-4.5.2/conf/broker.conf]是否正确,当启动后要进入容器在broker.conf中配置上NameServer的ip信息。将broker注册进Nameserver。
5. 启动Rockermq-console控制台
获取镜像
docker search rocketmq-console-ng
docker pull rocketmq-console-ng
启动控制台
docker run -d --name rmqconsole -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.56.10:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8180:8080 -t styletang/rocketmq-console-ng --restart always
访问地址:ip:8180