禁用feign retryer

当前位置:首页高博最新入口 >

高博最新入口

禁用feign retryer

时间:2019-06-13本站浏览次数:109

       

         为什么要禁用retryer?其实主要是为了Debug,禁用feign retryer有两面性,如果接口做好幂等性,retry不影响,但是总有一些意外发生,比如:有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这时候客户端访问该节点的时候自然会失败。所以,为了构建更为健壮的应用系统,我们希望当请求失败的时候能够有一定策略的重试机制,而不是直接返回失败。这个时候就需要Retryer;像一些更新德接口,如果不做好幂等性,retry可能会导致数据错乱;dev环境feign调用会频繁出现retry,影响Debug;下面让我们一起开启debug模式:

1,下载feign-core

// https://mvnrepository.com/artifact/com.netflix.feign/feign-coreruntime group: "com.netflix.feign", name: "feign-core", version: "8.18.0"

feign-core是runtime不是compile,build会报错;把jar包下载下来放在libs目录下,用compile的方式。

compile fileTree(dir:"libs",include:["*.jar"])

2,Retryer不去重试

@Configurationpublic class RetryerConfig { @Bean @Primary Retryer feignRetryer() { return Retryer.NEVER_RETRY; }}

配置完retryer之后还会出现两次请求,为什么?我们没有配置ribbon相关的properties。

3,Ribbon properties

#Max number of retriesribbon.MaxAutoRetries=0#Max number of next servers to retry (excluding the first server)ribbon.MaxAutoRetriesNextServer=0#Whether all operations can be retried for this clientribbon.OkToRetryOnAllOperations=false#Interval to refresh the server list from the sourceribbon.ServerListRefreshInterval=2000#Connect timeout used by Apache HttpClientribbon.ConnectTimeout=3000#Read timeout used by Apache HttpClientribbon.ReadTimeout=5000

xxx-service.ribbon.ConnectTimeout:请求连接的超时时间

xxx-service.ribbon.ReadTimeout:请求处理的超时时间

xxx-service.ribbon.OkToRetryOnAllOperations:对所有操作请求都进行重试

xxx-service.ribbon.MaxAutoRetriesNextServer:切换实例的重试次数

xxx-service.ribbon.MaxAutoRetries:对当前实例的重试次数

         根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由MaxAutoRetries配置),如果不行,就换一个实例进行访问,如果还是不行,再换一次实例访问(更换次数由MaxAutoRetriesNextServer配置),如果依然不行,返回失败信息。大家要设置Connect和Read超时时间的话,不要小于默认设置的超时时间;如果同时使用Retryer和Hystrix,建议Hystrix的超时>其他组件的超时,否则将可能导致重试特性失效。

        其实最后再次强调一下,这篇只适合debug,生产上不要去禁用Retryer,但是小伙伴们一定要做好幂等性。下一篇聊一下Hystrix,欢迎吐槽!上一篇小哥哥说过要考研,现在已经决定了,有考验经验的小伙伴可以留言分享一下经验。不要玻璃心,不怂就是一个字干!自勉!

 

, 1, 0, 9);




公司地址:(章贡区)赣州贸易广场(南康区)东山工业四路1号
联系人:魏香赞 13623816725
田继前 15336887075
电话:13937760969 传真:nlvukb@162.com
邮箱:j6txlc@hotmail.com

粤公网安备 44030702001579号

高博亚洲打不开@