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

重启镜像之后问题解决

原文地址:https://www.cnblogs.com/lijunyzzZ/p/14687315.html