RocketMQ: 解决SpringBoot能连接上NameServer但是连接不上broker
问题:在使用docker部署rocketMQ之后使用SpringBoot连接消息队列出现连接失败
现象
按照https://zebinh.github.io/2020/07/RocketMQDeploymentWithSpringBootDemo/ 博客中搭建RocketMq,使用springBoot发消息的时候出现异常
异常大致信息就是 : 无法连接172.190.0.5:10911
配置rocketmq的时候我制定了broker的端口是10911端口,所以我断定是连接broker出现了问题。
docker run --name rmqbroker -d -p 10911:10911 -p 10909:10909 --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" rocketmqinc/rocketmq:4.4.0 sh mqbroker
分析
上网了解了下,其实使用RocketMq的时候需要先找nameServer去拿到broker的地址,所以我感觉是nameServer上broker的地址出现了问题。
http://172.23.127.190:8080/#/cluster 控制台上看了下确实是这样的。ip地址是docker的ip,而不是我虚拟机的ip。在使用SpringBoot发送消息的时候,SpringBoot是无法访问到docker的。
所以只需要修改下brocker 往nameServer注册的ip就可以
方案
重新创建使用配置的容器
需要修改brocker.conf里面的配置,但是我开始启动的镜像没有使用配置,所以重新启动一个:
docker run -d -p 10911:10911 -p 10909:10909 -v /root/data/broker/logs:/root/logs -v /root/data/broker/store:/root/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c ../conf/broker.conf
from https://blog.csdn.net/qq_41322100/article/details/104490051
修改配置文件
这里最主要的是使用-c 参数来指定配置文件的地址
启动之后使用如下命令进入镜像
docker exec -it --user root rmqbroker bash
cd ../conf
vi broker.conf
加上一行
brokerIP1=192.168.1.116
重启镜像之后问题解决