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默认不重试

相关文章:

  • 2022-12-23
  • 2021-11-03
  • 2022-01-15
  • 2021-12-18
  • 2021-12-20
  • 2022-12-23
  • 2021-06-27
  • 2021-10-12
猜你喜欢
  • 2021-09-27
  • 2022-01-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案