Feign的超时、重试、降级配置

application.yml

ribbon:
  #请求连接的超时时间,单位为毫秒,默认为1000
  ConnectTimeout: 6000
  #请求处理的超时时间,单位为毫秒,默认为1000
  ReadTimeout: 6000
  # 是否对所有请求都进行重试。false(默认)-只对get请求进行重试;true-对所有请求进行重试(对于put或post等写操作,如果服务器接口没做幂等性,重试会产生不好的结果)!!!
  OkToRetryOnAllOperations: false
  # 每个实例重试次数,不包括首次请求,默认为0。当Eureka中可以找到服务,但是服务连不上时将会重试
  MaxAutoRetries: 0
  # 重试的时候实例切换次数,不包括首次请求,默认为1。包括单机版的服务,也会重试。
  MaxAutoRetriesNextServer: 1

# 因为ribbon的重试机制和Feign的重试机制有冲突,所以源码中默认关闭Feign的重试机制,建议不要开启
feign:
  hystrix:
    enabled: true

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            # 如果配置了ribbon的重试,hystrix的超时时间要大于ribbon的超时时间,ribbon才会重试
            timeoutInMilliseconds: 3000

Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。hystrix的超时时间最好大于(ConnectTimeout+ReadTimeout)*(MaxAutoRetries+1)*(MaxAutoRetriesNextServer+1)

默认情况下,GET方式请求无论是连接异常还是读取异常,都会进行重试 ,非GET方式请求,只有连接异常时,才会进行重试。

hystrix超时时间应该大于:(MaxAutoRetries+1)*(MaxAutoRetriesNextServer+1) * (ConnectTimeout+ReadTimeout)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值