feign和ribbon的异常捕捉


1、在selectServer的时候,如果没有对应的server,那么会抛出一个ClientException,然后被捕获,进入RxJava的next链,最后再抛出异常给调用方法,这时候就需要我们自己处理。

2、如果有server,第一次失败,如果没到到最大重试次数,ribbon的RxJava的调用链会自己捕捉,进入重试,但是如果最大重试次数之后还是超时(ribbon的connectTimeout是1秒),ribbon的调用链不会捕获,会抛出IOException到外层,被feign的RetryableException捕捉,但是feign默认的是不重试,结果再抛出异常给调用方法。

3、如果http请求成功,4**和5**的响应码会在executeAndDecode方法中被处理,抛出异常,默认不是RetryableException,直接抛出异常给调用方法。ps:自己可以重写retryAfterDecoder使得抛出的是RetryableException,进入feign的重试机制。

注意:feign的重试机制和ribbon不同,而且feign默认不重试


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM