RabbitMQ报错AmqpConnectException: java.net.ConnectException: Connection refused的解决方法

问题描述:

之前运维调整了测试服务器用的RabbitMQ的IP地址,并重新配置了RabbitMQ。

然后开发也相应修改了RabbitMQ的IP地址,但是测试时还是出问题了。

 

MQ生产者放不进去数据,也不报错;

 

MQ消费者收不到数据,报错很奇怪:

 

1.本地启动MQ消费者,报错Connection refused

WARN||Consumer raised exception, processing can restart if the connection factory supports it.Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connection|SimpleMessageListenerContainer.java|1168|

2.测试服务器启动MQ消费者,报错Connection timed out

Consumer raised exception, processing can restart if the connection factory supports it.Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection timed out|SimpleMessageListenerContainer.java|1168|

还好生产上的代码正常,因为没有调整MQ。

但是测试有问题,还是得想办法解决。

 

解决方法:

1.首先检查代码中配置的MQ基本信息,用户名(username)、密码(password)、MQ的IP地址(addresses)、端口(port)、虚拟主机(virtualHost)

mq消费者就用到了这5个配置,检查完后没有发现问题。

 

2.应该继续检查MQ中的用户权限是否配置正常(读写权限)、本地IP与测试IP是否有权限访问MQ服务器等(telnet倒是能通),但是似乎也没有问题。(自己没有权限、是别人检查的)

 

3.百度,发现答案五花八门,并没有解决了问题。

 

4.自己尝试,发现需要将端口号配置到IP后面,然后配置中去掉"port"才行。

但是之前分开写是没问题的,并且生产上也是分开写的。

总之,测试上得把端口号配置到IP后面,然后MQ生产者消费者就能正常使用MQ了。可能是运维重新配置RabbitMQ时,配置的与之前不一样了吧。

修改前代码(生产上正确,测试上不行;说明某种情况下不能这样写):

init.properties:
host=10.10.123.123
port=5672

context-rabbitMq.xml:
<bean id="connectionFactory2" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
 <property name="username" value="root" />
 <property name="password" value="root" />
 <property name="addresses" value="${host}" />
 <property name="port" value="${port}" />
 <property name="virtualHost" value="l_insurance_1" />
 <property name="channelCacheSize" value="50" />
</bean>

修改后代码(将port写到mq的ip地址后面,然后删掉port):

init.properties:
host=10.10.123.123:5672

context-rabbitMq.xml:
<bean id="connectionFactory2" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
 <property name="username" value="root" />
 <property name="password" value="root" />
 <property name="addresses" value="${host}" />
<!-- <property name="port" value="${port}" /> -->
 <property name="virtualHost" value="l_insurance_1" />
 <property name="channelCacheSize" value="50" />
</bean>

总结:

当RabbitMQ报错Connection refusedConnection timed out时,确认配置信息代码权限无误后,可以试试把端口号写到IP后面,也许就能解决问题了。

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值