org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connec

本文介绍了在SpringBoot 2.3.7.RELEASE项目中,使用Docker容器运行RabbitMQ时遇到的连接异常问题。问题在于程序在启动后尝试两次连接RabbitMQ,第一次使用了正确的配置,而第二次则尝试连接到本地的5672端口。通过分析日志发现,第二次连接是健康检查导致的。为解决此问题,调整了`application.yml`配置,将RabbitMQ的相关配置移出`cloud.stream.binders`,直接在`spring.rabbitmq`下配置,确保程序只使用正确的远程服务器地址。这样避免了因健康检查导致的异常,实现了稳定连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

云服务器使用docker容器来运行rabbitmq
Spring Boot 2.3.7.RELEASE



<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

application.yml

# 应用服务 WEB 访问端口
server:
  port: 8004

# 应用名称
spring:
  application:
    name: demo-10-stream-rabbitmq-provider
  cloud:
    stream:
      binders:
        defaultRabbit:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: 120.37.100.249
                # 默认是5672,但我进行了端口映射
                port: 5676
                username: zg
                password: password
      bindings:
        output:
          destination: studyExchange
          content-type: application/json
          binder: defaultRabbit

使用该配置后的异常信息
error
控制台日志
log
第一次试图连接访问的就是application.yml中配置的地址(121.37.199.247:5676),此时已经连接成功;

但是程序还会在之后进行第二次连接(进行健康检查时),此时访问的地址就是localhost:5672。但在我本地环境中并没有安装rabbitmq环境,所以直接报IOException。
在这里插入图片描述



解决方法:
配置 spring.rabbitmq ,而不使用默认的。

# 应用服务 WEB 访问端口
server:
  port: 8004

# 应用名称
spring:
  application:
    name: demo-10-stream-rabbitmq-provider
  rabbitmq:
    host: 120.37.100.249
    port: 5676
    username: zg
    password: password
  cloud:
    stream:
      binders:
        defaultRabbit:
          type: rabbit
      bindings:
        output:
          destination: studyExchange
          content-type: application/json
          binder: defaultRabbit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值