Spring Cloud Feign 请求重试次数

Spring Cloud 版本:Camden.SR6

feign客户端工程的application文件:

ribbon:
  MaxAutoRetries: 3
  ReadTimeout: 3000

如上述配置,只配置了MaxAutoRetries没配置MaxAutoRetriesNextServer(MaxAutoRetriesNextServer默认值是1),那么超过ReadTimeout实际重新请求的次数不是3次,而是7次。通过多次调试得出以下结论,实际请求次数为:

MaxAutoRetries +  MaxAutoRetriesNextServer + (MaxAutoRetries MaxAutoRetriesNextServer  )

如果想固定重新请求的次数,需要同时配置MaxAutoRetriesNextServer=0或者MaxAutoRetries=0

ribbon:
  MaxAutoRetries: 3
  MaxAutoRetriesNextServer: 0
  ReadTimeout: 3000

或者

ribbon:
  MaxAutoRetries: 0
  MaxAutoRetriesNextServer: 3
  ReadTimeout: 3000

具体源码可参考Ribbon源码 LoadBalancerCommand

312行:超时回调方法

Spring Cloud Feign 请求重试次数_第1张图片

282行:获得服务状态,其中ServerStats包含了请求的次数等信息


默认初始化配置类:DefaultClientConfigImpl

Spring Cloud Feign 请求重试次数_第2张图片



你可能感兴趣的:(java)