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