zoukankan      html  css  js  c++  java
  • 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默认不重试

  • 相关阅读:
    斐波那契数列
    用两个栈实现队列
    从尾到头打印链表
    HDOJ5877(dfs序+离散化+树状数组)
    HDOJ5876(补图的最短路)
    POJ3090(欧拉函数)
    POJ2478(欧拉函数)
    POJ2407(欧拉函数)
    POJ2142(扩展欧几里得)
    POJ3020(最小边覆盖)
  • 原文地址:https://www.cnblogs.com/chuliang/p/13100531.html
Copyright © 2011-2022 走看看