使用 docker RabbitMQ 容器, org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connec 无法连接

报错异常:

在这里插入图片描述
下面是我的配置 application.yml

server:
  port: 8801

spring:
  application:
    name: cloud-stream-provider
  cloud:
      stream:
        binders: # 在此处配置要绑定的rabbitmq的服务信息;
          defaultRabbit: # 表示定义的名称,用于于binding整合
            type: rabbit # 消息组件类型
            environment: # 设置rabbitmq的相关的环境配置
              spring:
                rabbitmq:
                  host: 华为云ip// localhost
                  port: 5672
                  username: guest
                  password: guest
        bindings: # 服务的整合处理
          output: # 这个名字是一个通道的名称
            destination: studyExchange # 表示要使用的Exchange名称定义
            content-type: application/json # 设置消息类型,本次为json,文本则设置“text/plain”
            binder: defaultRabbit # 设置要绑定的消息服务的具体设置

eureka:
  client: # 客户端进行Eureka注册的配置
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)
    lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)
    instance-id: send-8801.com  # 在信息列表时显示主机名称
    prefer-ip-address: true     # 访问的路径变为IP地址

这里有个大坑,application.yml使用了spring.cloud.stream.binders.defaultRabbit.environment.spring.rabbitmq.xx

来配置rabbitmq的环境如果你是用的其他服务器上的rabbitmq,比如我使用的我自己的华为云服务器然后创建docker容器来运行

rabbitmq。按照视频中的配置方式的话,启动时会试图连接两次rabbitmq程序第一次试图连接访问的就是application.yml中配置

的地址,此时已经订阅成功了但是程序还会在之后进行第二次连接,此时访问的地址就是localhost:5672,在我的环境中,我本地

没有rabbitmq环境,所以直接报IOException所以,如果是使用的自己的服务器来配置,则需要修改配置文件,将rabbitmq的配置

信息移动到application.yml中的spring节点下修改后的配置如下:

server:
  port: 8801

spring:
  application:
    name: cloud-stream-provider
  rabbitmq:
    host: 华为云ip// localhost
    port: 5672
    username: guest
    password: guest
  cloud:
    stream:
      binders:
        defaultRabbit:
          type: rabbit
      bindings:
        output:
          destination: studyExchange
          content-type: application/json
          binder: defaultRabbit

eureka:
  client: # 客户端进行Eureka注册的配置
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)
    lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)
    instance-id: send-8801.com  # 在信息列表时显示主机名称
    prefer-ip-address: true     # 访问的路径变为IP地址

在这里非常感谢这位老哥:
在这里插入图片描述
重启启动成功!!!!
如果对你有帮助的话,点个赞呗!!!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐