SpringCloud之Feign 負載均衡請求超時時間


版本聲明:

  SpringCloud:Greenwich.SR4

   SpringBoot:2.1.9.RELEASE


 

Feign調用服務的默認時長是1秒鍾,也就是如果超過1秒沒連接上或者超過1秒沒響應,那么會相應的報錯。

但是在實際的業務中,我們的服務可能因為特別原因(網絡、處理壓力大等)導致相應速度超過1秒鍾,那么就會報錯,

下面我們就來處理如何手動配置Feigin的負載均衡超時等參數

 

全局配置

SpringCloud負載均衡底層用的就是Ribbon

#--------------Feign負載均衡配置 配置全局超時時間
ribbon:
  ConnectTimeout: 5000 #請求連接的超時時間,默認時間為1秒
  ReadTimeout: 5000 #請求處理的超時時間

5秒沒有響應成功就報如下錯誤(真實情況下,會比5s多一些,因為發送請求也需要時間的,模擬超時可以在請求處理的方法上用Thread.sleep()設置休眠時間超過5s)

 

 


 

局部配置(就是指定提供者)

#--------------Feign負載均衡配置 局部配置超時時間等
feign-product-provider: #指定配置的服務名稱
  ribbon:
    OkToRetryOnAllOperations: true # 對所有請求都進行重試
    MaxAutoRetries: 2 # 對當前實例的重試次數
    MaxAutoRetriesNextServer: 0 # 切換實例的重試次數(集群狀態下,其它對其它實例服務重試的次數)
    ConnectTimeout: 3000 # 請求連接的超時時間
    ReadTimeout: 3000 # 請求處理的超時時間

上述提到的服務名稱如下配置

spring:
  application:
    name: feign-product-provider # 隨意設置

執行的代碼

 

 

輸出結果


不是一共重試兩次嗎?這里邊就涉及到了一個公式

 共重試次數 = (MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries * MaxAutoRetiresNextServer)
      = 2 + 0 + (2 * 0)
      = 2
在加上我們手動請求一次那就是:2 + 1 = 3次



公式很重要!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM