接着上一篇文章,记录下feign的超时配置
Feign底层用了ribbon做负载均衡,这里记录下ribbon的超时配置
# 服务提供者的 spring.application.namefeign-client-provider: ribbon: # 所有HTTP Method进行重试 OkToRetryOnAllOperations: true # 每台机器最大重试次数 MaxAutoRetries: 2 # 可以再重试几台机器 MaxAutoRetriesNextServer: 2 # 连接超时 ConnectTimeout: 1000 # 处理超时 ReadTimeout: 2000
根据这段配置,我们可以计算下 最终会耗时多久,才会报超时异常
公式:(1+机器重试次数)*(1+重试机器数)*超时时间
(1+2)* (1+2)*2=18s
接下来我们验证下
在上一篇文章的项目基础上,我们增加一个超时接口
然后provider实现下
最后消费者调用该超市接口
我们用不同的端口 启动两个服务提供者
然后开始调用
看下后台输出
50001端口服务提供者的后台输出
50002端口的服务提供者的后台输出
可以看出来
1 单台机每次被调用3次,符合MaxAutoRetries=2的预期 调用超时后,可以再重试2次,一共调用3次
2 5001被调用1次,5002被调用2次,符合MaxAutoRetriesNextServe=2 的预期 1台机器超时后,可以再重试2台机器,一共调用3台机器
在看下消费者后台输出
一共耗时18s 才报错,符合我们的计算结果