Spring Cloud Feign调用异常:feign.RetryableException: connect timed out executing POST http://xxx

在使用Spring Cloud Feign接口调用时,发现调用接口链接超时,报错信息如下:

feign.RetryableException: connect timed out executing POST http://xxx

本案例使用 nacos 注册中心

前景提要:提供方的服务已经在开发环境注册中心注册,本地开发服务调用方时,使用开发环境的注册中心,调用服务提供方

排查一:

如果注册中心含有多个命名空间,则需要保证  调用方、提供方的微服务 在同一个命名空间下

即:spring.cloud.discovery.namespace 保持一致

如果 nacos 只有一个默认的 public(保留空间),可以不用配置 spring.cloud.discovery.namespace

排查二:

如果 调用方、提供方的微服务 都已经在注册中心成功注册,并且可以查询到 两个微服务信息时,需要排查是否可以 ping 通 两个微服务的注册ip

本地开发调用者ip

 另一个服务提供方注册ip

排查发现 ping  服务提供方ip时,请求超时。

 

到这里 feign 接口连接超时问题就找到了,因为服务提供方使用 docker 容器部署,注册ip使用的是容器ip,本地开发的 服务调用方与服务提供方不能够 ping通,导致 connect timed out。

解决方案:

1、更换其他能够 ping 通 服务提供方的 nacos注册中心地址。

2、在同一个docker服务中部署服务调用方

参考:Spring Cloud feign 接口调用,可能出现的各种异常

https://www.iflym.com/index.php/code/202006010001.html