在使用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服務中部署服務調用方