Spring Cloud OpenFeign 超時與重試

馮文議發表於2022-01-11

今天給大家分享的是 feign 的超時與重試配置。

超時

feign:
  client:
    config:
      default:
        connectTimeout: 1000
        readTimeout: 1000

需要注意以下幾點:

1、連線超時 (connectTimeout) 和 讀取超時 (readTimeout) 同時配置時,才會生效。

2、超時單位為毫秒。

3、可根據服務名稱單獨定義超時。

比如, provider-get 服務提供的是查詢介面,超時時間可以設定短一些:

feign:
  client:
    config:
      provider-get:
        connectTimeout: 1000
        readTimeout: 6000

而, provider-post 服務提供的是資料處理介面,超時時間可以設定長一些:

feign:
  client:
    config:
      provider-post:
        connectTimeout: 1000
        readTimeout: 20000

重試

實現 feign.Retryer 介面

public class MyRetryer implements Retryer {
    @Override
    public void continueOrPropagate(RetryableException e) {
        throw e;
    }

    @Override
    public Retryer clone() {
        return new Default(100, TimeUnit.SECONDS.toMillis(1), 5);
    }
}

三個引數的理解:

  • period:週期,重試間隔時間
  • maxPeriod:最大週期,重試間隔時間按照一定的規則逐漸增大,但不能超過最大週期
  • maxAttempts:最大嘗試次數,重試次數

之後,我們可以進行配置:

feign:
  client:
    config:
      default:
        retryer: com.fengwenyi.springclouddemo.demospringcloudfeignsentinel.consumerservice.MyRetryer

希望今天的分享能夠在工作中幫助到你。

相關文章