一、问题描述
最近公司服务器使用了新版mq集群,RabbitMq3.8.6,导致之前的项目报错:Connection Refused。
找了好几天,终于找到了解决方法。
先记录下错误信息:
o.s.a.r.c.CachingConnectionFactory : Attempting to connect to : [10.123.123.123, 10.123.123.124:5672]
o.s.a.r.l.SimpleMessageListenerContainer : Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectionException: Connection Refused (Connection refused)
二、解决方法
首先发现错误信息中mq尝试连接的ip有问题,第一个没有端口,第二个有端口;
然后百度,找到了一个网址,发现连接新版mq集群需要使用新版配置语句才行,简单的说就是将host换成addresses,去掉port,把端口写在ip后面。
之前的配置信息(springboot项目中的yml文件):
rabbitmq:
host: 10.123.123.123,10.123.123.124
port: 5672
username: abc
password: abc
这个配置信息连接旧版mq是可以的,但是新版不行(例如3.8.6),会报错Connection refused。
修改后可以使用的配置信息(RabbitMq3.8.6可用):
rabbitmq:
addresses: 10.123.123.123:5672,10.123.123.124:5672
username: abc
password: abc
三、备注
1.还碰到了一个错误:socket closed,检查后发现是mq的 virtual-host 填错了。
2.之前spring项目也遇到了同样的问题,是xml+properties配置的RabbitMq,解决方法和这个类似,也是去掉port,将端口加到ip后面。见下文:
https://blog.csdn.net/BHSZZY/article/details/112570945
3.参考网址:
https://blog.csdn.net/qq_45491757/article/details/105712530