Ribbon 的重试调用次数

ribbon:
  MaxAutoRetriesNextServer: 3  #更换实例的次数
  MaxAutoRetries: 2   #当前实例重试的次数,失败之后更换下个实例
  
@LoadBalanced
@Bean
public RestTemplate getRestTemplate(){
    SimpleClientHttpRequestFactory f = new SimpleClientHttpRequestFactory();
    //默认俩个变量都是-1,不会启动重试
    f.setConnectTimeout(1000);
    f.setReadTimeout(1000);
    return new RestTemplate(f);
}

假设B服务调用A服务(A1:8080,A2:8088),在A服务接口Thread.sleep(5000) 也就是说 A服务接口永远超时,那么重试的情况是这样的
假设刚进来是A1,由于超时所以开始重试,因为MaxAutoRetries=2,所以此时对A1追加重试两次,重试情况: A1A1A1
由于一直超时所以切换到请求A2 (切换实例第一轮)
A2超时,然后还是因为MaxAutoRetries=2,所以继续对A2追加重试两次 重试情况:A1A1A1 A2A2A2
由于一直超时所以切换到请求A1 (切换实例第二轮)
A1超时,然后还是因为MaxAutoRetries=2,所以继续对A1追加重试两次 重试情况:A1A1A1 A2A2A2 A1A1A1
由于一直超时所以切换到请求A2 (切换实例第三轮)
A2超时,然后还是因为MaxAutoRetries=2,所以继续对A2追加重试两次 重试情况:A1A1A1 A2A2A2 A1A1A1 A2A2A2
所以最终会请求 (2 + 1) * (3 + 1 ) = 12 次,最终重试情况: A1A1A1 A2A2A2 A1A1A1 A2A2A2(不算第一次的调用)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值