
在服务提供者的controller里新增一个方法,没有业务逻辑,只是睡3s。
Feign接口里需要新增一个调用提供者的方法,注意要和上面的方法一致。
消费者controller新增一个调用feign的方法
这样我们的环境就准备好啦
先测试一下8001,看看自测是否通过
等待了3秒钟,我们看到访问成功,自测没问题!
接着我们通过消费者来测试
我们可以看到,通过消费者来访问,就会报超时,可是提供者只是处理的慢,并没有其他问题。
这就需要设置Feign客户端的超时时间来控制了
设置超时时间只需要在yml配置文件中配置即可
添加好配置后,我们再重启
这次就不会再出现超时的情况了。
问题根源有二:1):业务耗时时间比较长,超过服务调用超时时间配置,由于Spring Cloud 服务调用超时重试机制默认开启,所以会导致服务被调用了两次。
2):服务端未做幂等性,导致重复的业务处理。
增大配置超时时间
ribbon.ReadTimeout=10000
ribbon.ConnectTimeout=10000
eureka服务调用重试开关的配置属性:
默认开启。
重试机制:对于连接超时的异常,feign都会触发重试机制,对于读取超时,会根据请求类型判断,如果是GET异常,触发重试;其他异常,不会触发重试。
服务响应超时时间,默认5s,连接的超时时间为2s。
同一实例最大重试次数为1
负载均衡的其他实例的重试次数为2
对所有 *** 作请求都进行重试,默认false,建议不要开启。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)