問題:在使用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
重啟鏡像之后問題解決