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