RocketMQ消息中间件使用部署流程:
- 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。
- Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关系。
- 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic。
- Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息。
- Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息。
Docker安装部署RocketMQ消息中间件详细教程
查找rocketmq镜像
docker serach rocketmq
拉取rocketmq镜像
docker pull rocketmqinc/rocketmq
创建文件夹(挂在目录)
mkdir /mydata
cd /mydata
mkdir -p rocketmq/nameserver/logs
mkdir -p rocketmq/nameserver/store
运行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服务 |
安装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 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消息中间件详细教程】就学习到这里,更多内容持续创作中。
版权声明:本文为Coder_ljw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。