众妙之门

业精于勤,荒于嬉;行成于思,毁于随

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在Spring Boot微服务架构中,大部分公司都是利用Open Feign进行服务间的调用,而在业务场景比较简单的时候,使用默认配置是不会遇到多大问题的。但是如果业务比较复杂,服务要进行比较繁杂的业务计算,那后台很有可能会出现Read Timeout这个异常,因此定制化配置超时时间就有必要了。
影响到feign接口超时时间的主要有三类配置:feign、ribbon、hystrix和OKhttp(若配置)。

注意:Feign 和 Ribbon 的超时时间只会有一个生效
当我们没有显式配饰feign的超时时间的是时候,如果配置了ribbon的超时时间,则只有这个配置会生效,feign默认的1s超时无效
如果我们feign和ribbon的超时时间都配置了,会以feign配置的为准

在Feign中开启Hystrix
Feign本身支持Hystrix,默认是关闭Hystrix的,需要在配置文件中开启。但不同的Spring Cloud版本,开启Hystrix的配置不一样。
1、Spring Cloud 2020之前的版本
只需在配置文件中设置feign.hystrix.enabled=true
2、Spring Cloud 2020之后的版本
feign.hystrix.enabled=true无法解析,需要配置:feign.circuitbreaker.enabled=true

如果没有打开feign.hystrix.enabled=true,超时后会直接报异常,打开后才会走熔断

同时配置hystrix和feign的时候,如果没有关闭hystrix的超时会适用hystrix的配置,如果使用feign的配置

使用feign的超时

feign:
  hystrix:
    enabled: true
  client:
    config:
      default:
        connectTimeout: 120000
        readTimeout: 120000

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false

使用hystrix的超时

feign:
  hystrix:
    enabled: true
#超时时长
ribbon:
  ReadTimeout: 70000  #处理请求的超时时间
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 70000

 https://blog.csdn.net/w55935/article/details/126158124

posted on 2022-08-09 14:41  xuanm  阅读(1480)  评论(0编辑  收藏  举报