Spring Cloud Feign 第一次调用超时(Read timed out)的解决办法

Spring Cloud Feign 第一次调用超时(Read timed out)的解决办法

Read timed out异常,提示的报错信息:

java.net.SocketTimeoutException: Read timed out

这是由于在调用其他微服务接口前,会去请求该微服务的相关信息(地址、端口等),并做一些初始化操作,由于默认的懒加载特性,导致了在第一次调用时,出现超时的情况,解决方法主要有两种:

 

第一种办法是设置超时时间,具体设置成多少,因项目而异,配置如下:

# 全局关闭Hystrix超时,对所有微服务有效
hystrix.command.default.execution.timeout.enabled: false

# 关闭某一个微服务的超时
hystrix.command.<serviceName>.execution.timeout.enabled: false

# 全局设置超时时间为60秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000

# 设置某一个微服务的超时时间为60秒
hystrix.command.<serviceName>.execution.isolation.thread.timeoutInMilliseconds: 60000

# 设置ribbon超时时间
ribbon:
  ReadTimeout: 20000
  ConnectTimeout: 20000

第二种办法,也是比较推荐的方式,配置ribbon立即加载

此处需要注意的是,光配置立即加载是不生效的,还要配置客户端列表,配置如下,详细配置请参考官方说明:

ribbon:
    eager-load:
        enabled: true
        clients: distribution, material-product, outer-data #需要调用的微服务名称

 

Spring Cloud Feign 第一次调用超时(Read timed out)的解决办法

相关文章:

你感兴趣的文章:

标签云: