应用启动后RabbitMQ连接被拒绝问题排查求助
RabbitMQ连接被拒绝问题排查与解决
问题概述
应用启动后触发RabbitMQ连接失败,报错核心为java.net.ConnectException: Connection refused,非RabbitMQ相关功能正常运行。错误日志及配置如下:
错误日志
Attempting to connect to: [localhost:5672] 2022-09-22 17:51:12.872 WARN 80292 --- [ 127.0.0.1:5672] c.r.c.impl.ForgivingExceptionHandler : An unexpected connection driver error occured (Exception message: Socket closed) 2022-09-22 17:51:12.880 WARN 80292 --- [)-192.168.87.19] o.s.b.a.amqp.RabbitHealthIndicator : Rabbit health check failed org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused (Connection refused) at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:61) ~[spring-rabbit-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:510) ~[spring-rabbit-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:751) ~[spring-rabbit-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:214) ~[spring-rabbit-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:2095) ~[spring-rabbit-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2068) ~[spring-rabbit-2.2.5.RELEASE.jar:2.2.5.RELEASE]
当前配置(application.properties)
#RABBITMQ spring.rabbitmq.addresses=amqp://rabbitmq:rabbitmq@localhost:5672
可能原因
- RabbitMQ服务未启动:本地
localhost:5672端口无RabbitMQ服务监听,导致连接请求被拒绝。 - 端口被占用:5672端口被其他进程占用,RabbitMQ无法正常监听该端口。
- 账号密码错误:配置中的用户名/密码与RabbitMQ实际账号不匹配(虽报错为连接拒绝,但需排除此可能)。
- 防火墙限制:本地防火墙拦截了应用对5672端口的访问请求。
解决方法
检查RabbitMQ服务状态
- 执行
rabbitmqctl status(Windows需进入RabbitMQ安装目录的sbin文件夹运行),确认服务是否正常运行。 - 若服务未启动,启动RabbitMQ:Windows运行
rabbitmq-server start,Linux运行systemctl start rabbitmq-server。
- 执行
排查端口占用
- Windows:执行
netstat -ano | findstr :5672,查看端口占用进程ID,通过任务管理器终止该进程。 - Linux:执行
lsof -i :5672,找到占用进程后执行kill -9 <进程ID>终止。 - 若无法终止占用进程,可修改RabbitMQ监听端口:编辑
rabbitmq.conf,设置listeners.tcp.default=5673(或其他未占用端口),同时更新应用配置中的端口号。
- Windows:执行
验证配置正确性
- 确认RabbitMQ账号密码是否有效:默认安装的RabbitMQ账号密码为
guest/guest,若自定义过账号,需同步修改应用配置。 - 建议拆分配置项以提高可读性,避免地址格式错误:
spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=rabbitmq spring.rabbitmq.password=rabbitmq
- 确认RabbitMQ账号密码是否有效:默认安装的RabbitMQ账号密码为
检查防火墙设置
- 临时关闭本地防火墙测试是否能连接,若恢复正常,需在防火墙中添加允许应用访问5672端口的规则。
内容的提问来源于stack exchange,提问作者Zhazgul
相关产品推荐
相关产品推荐

