【Docker安装部署RocketMQ消息中间件详细教程】

RocketMQ消息中间件使用部署流程:

  1. 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。
  2. Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关系。
  3. 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic。
  4. Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息。
  5. Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息。

Docker安装部署RocketMQ消息中间件详细教程

查找rocketmq镜像

docker serach rocketmq

【Docker安装部署RocketMQ消息中间件详细教程】_第1张图片

拉取rocketmq镜像

docker pull rocketmqinc/rocketmq

【Docker安装部署RocketMQ消息中间件详细教程】_第2张图片

创建文件夹(挂在目录)

mkdir /mydata
cd /mydata
mkdir -p rocketmq/nameserver/logs
mkdir -p rocketmq/nameserver/store

【Docker安装部署RocketMQ消息中间件详细教程】_第3张图片

运行rocketmq容器

docker run -d --restart=always --name mqnameserver --privileged=true -p 9876:9876  -v /mydata/rocketmq/nameserver/logs:/root/logs -v /mydata/rocketmq/nameserver/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv

参数说明

运行参数 详细说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name mqnameserver 把容器的名字设置为mqnameserver
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
/mydata/rocketmq/nameserver/logs:/root/logs 目录挂载
/mydata/rocketmq/nameserver/store:/root/store 目录挂载
mqnameserver 容器的名字
-e “MAX_POSSIBLE_HEAP=100000000” 设置容器的最大堆内存为100000000
rocketmqinc/rocketmq 使用的镜像名称
sh mqnamesrv 启动namesrv服务

【Docker安装部署RocketMQ消息中间件详细教程】_第4张图片

安装broker

创建conf文件夹,创建broker.conf配置文件:

cd /mydata/rocketmq
mkdir conf
touch broker.conf
vim broker.conf

编辑文件内容:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 主机IP地址

brokerIP1参数说明:
broker.conf 的文件中的 brokerIP1 是你的 broker 注册到 Namesrv 中的 ip。如果不指定会默认取容器中的内网 IP。除非你的应用也同时部署在网络相通的容器中,本地或容器外就无法连接 broker 服务了,进而导致类似 RemotingTooMuchRequestException 等各种异常。

启动broker

docker run -d --restart=always --name rmqbroker --link mqnameserver:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v /mydata/rocketmq/data/broker/logs:/root/logs -v /mydata/rocketmq/data/broker/store:/root/store -v /mydata/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf

参数说明:

参数 解释说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name rmqbroker 把容器的名字设置为rmqbroker
- --link mqnameserver:namesrv 和mqnameserver容器通信
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-p 10909:10909 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存
rocketmqinc/rocketmq 使用的镜像名称
sh mqbroker -c /opt/rocketmq/conf/broker.conf 指定配置文件启动broker节点

在这里插入图片描述

安装控制台—拉取镜像

docker pull styletang/rocketmq-console-ng

【Docker安装部署RocketMQ消息中间件详细教程】_第5张图片

运行控制台

docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=IP地址:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 pangliang/rocketmq-console-ng

【Docker安装部署RocketMQ消息中间件详细教程】_第6张图片

测试访问–搞定

【Docker安装部署RocketMQ消息中间件详细教程】_第7张图片

好了,到这里【Docker安装部署RocketMQ消息中间件详细教程】就学习到这里,更多内容持续创作中。

你可能感兴趣的:(RocketMQ,java-rocketmq,docker,rocketmq)