org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException

6 篇文章 0 订阅
5 篇文章 0 订阅

2021-11-27-rabbitmq连接超时报错

报错截图:

在这里插入图片描述

报错文字版:

org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException
	at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:74) ~[spring-rabbit-2.2.2.RELEASE.jar:2.2.2.RELEASE]
	at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:510) ~[spring-rabbit-2.2.2.RELEASE.jar:2.2.2.RELEASE]
	at

报错解析及解决:

使用的配置文件为:

server:
  port: 8801

spring:
  application:
    name: cloud-stream-consumer
  cloud:
    stream:
      binders: # 在此处配置要绑定的rabbitMQ的服务信息
        defaultRabbit: # 表示定义的名称,用于binding的整合
          type: rabbit # 消息中间件类型
          environment: # 设置rabbitMQ的相关环境配置
            spring:
              rabbitmq:
                host: 阿里云IP地址
                port: 15672
                username: root
                password: 123456
      bindings: # 服务的整合处理
        input: # 这个名字是一个通道的名称
          destination: studyExchange # 表示要使用的exchange名称定义
          content-type: application/json # 设置消息类型,本次为json,文本则设为text/plain
#          binder: defaultRabbit # 设置要绑定的消息服务的具体设置
#          group: hfwas # 不同的组存在重复消费,相同的组之间竞争消费。

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka
  instance:
    lease-renewal-interval-in-seconds: 2 # 设置心跳的间隔时间,默认30
    lease-expiration-duration-in-seconds: 5 # 超过5秒间隔,默认90
    instance-id: receive-8802.com #主机名
    prefer-ip-address: true # 显示ip

使用的是阿里云服务器,使用docker安装rabbitmq,代码测试连接。阿里云安全组也开放了15672端口。

查找之后发现如果你使用的阿里云docker安装rabbitmq,需要将rabbitmq的配置文件移到spring下。修改为以下配置:

server:
  port: 8801

spring:
  application:
    name: cloud-stream-consumer
  rabbitmq:
    # 使用阿里云服务器,这里要填写阿里云服务器IP地址
    host: 阿里云IP地址
    # 这里一定要填写5672端口,不要写15672端口。否则会报连接被拒接
    port: 15672
    username: root
    password: 123456
  cloud:
    stream:
      binders: # 在此处配置要绑定的rabbitMQ的服务信息
        defaultRabbit: # 表示定义的名称,用于binding的整合
          type: rabbit # 消息中间件类型
#          environment: # 设置rabbitMQ的相关环境配置
#            spring:
#              rabbitmq:
#                host: 阿里云IP地址
#                port: 15672
#                username: root
#                password: 123456
      bindings: # 服务的整合处理
        input: # 这个名字是一个通道的名称
          destination: studyExchange # 表示要使用的exchange名称定义
          content-type: application/json # 设置消息类型,本次为json,文本则设为text/plain
#          binder: defaultRabbit # 设置要绑定的消息服务的具体设置
#          group: hfwas # 不同的组存在重复消费,相同的组之间竞争消费。

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka
  instance:
    lease-renewal-interval-in-seconds: 2 # 设置心跳的间隔时间,默认30
    lease-expiration-duration-in-seconds: 5 # 超过5秒间隔,默认90
    instance-id: receive-8802.com #主机名
    prefer-ip-address: true # 显示ip

重新启动项目之后,控制台还是会报错,报错信息复制如下:

org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException
	at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:74) ~[spring-rabbit-2.2.2.RELEASE.jar:2.2.2.RELEASE]
	at

Caused by: java.util.concurrent.TimeoutException: null

查找资料之后,发现需要将端口由15672修改为5672端口,阿里云开启5672的端口,然后测试。

配置文件修改如下:

server:
  port: 8801

spring:
  application:
    name: cloud-stream-consumer
  rabbitmq:
    # 使用阿里云服务器,这里要填写阿里云服务器IP地址
    host: 阿里云IP地址
    # 这里一定要填写5672端口,不要写15672端口。否则会报连接被拒接
    port: 5672
    username: root
    password: 123456
  cloud:
    stream:
      binders: # 在此处配置要绑定的rabbitMQ的服务信息
        defaultRabbit: # 表示定义的名称,用于binding的整合
          type: rabbit # 消息中间件类型
      bindings: # 服务的整合处理
        input: # 这个名字是一个通道的名称
          destination: studyExchange # 表示要使用的exchange名称定义
          content-type: application/json # 设置消息类型,本次为json,文本则设为text/plain
#          binder: defaultRabbit # 设置要绑定的消息服务的具体设置
#          group: hfwas # 不同的组存在重复消费,相同的组之间竞争消费。

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka
  instance:
    lease-renewal-interval-in-seconds: 2 # 设置心跳的间隔时间,默认30
    lease-expiration-duration-in-seconds: 5 # 超过5秒间隔,默认90
    instance-id: receive-8802.com #主机名
    prefer-ip-address: true # 显示ip

启动项目之后,控制台没有报错,rabbitmq浏览器端查看,也发现output也注册进来了,postman接口测试,控制台也正常打印。

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值