leftso 1546 0 2021-09-20
版权申明:本文为博主原创文章,未经博主允许不得转载。 https://www.leftso.com/blog/903.html
feign-client在第一次调用微服务会出现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 #需要调用的微服务名称












 
提示:本文最后更新于【 2021-09-20 08:25:23 】,某些文章具有时效性,若有错误或已失效,请在下方留言

评论区域