org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException
2021-11-27-rabbitmq连接超时报错报错截图:报错文字版:org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutExceptionat org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabb
·
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接口测试,控制台也正常打印。
更多推荐
所有评论(0)