最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

feign首次調(diào)用時初始化操作導(dǎo)致的超時問題及處理

 更新時間:2026年03月19日 08:52:36   作者:一定不晚睡啊  
這篇文章主要介紹了feign首次調(diào)用時初始化操作導(dǎo)致的超時問題及處理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

feign等待的時間默認情況下為1秒.如果1秒之內(nèi)沒有返回,那么此時會進行重試(默認情況下會重試一次)重試失敗后 會進行降級邏輯處理,如果沒有提供降級邏輯就會報錯

問題1

feign在進行第一次遠程調(diào)用時需要做很多的初始化操作(ribbon進行初始化),就會導(dǎo)致第一次遠程調(diào)用的時消耗的時間較長,有的時候可能會出現(xiàn)超時,在我們業(yè)務(wù)系統(tǒng)中應(yīng)該盡量避免觸發(fā)超時!

解決方案1

對ribbon的初始化操作提前完成,不要在第一次調(diào)用的時候才進行初始化

#開啟ribbon的饑餓加載
ribbon:
  eager-load:
    enabled: true
    clients: service-xxx服務(wù)模塊,可寫多個模塊

解決方案2

延長feign的超時時間

弊端:產(chǎn)生雪崩效應(yīng)的概率增大了

注意:顯示指定后如果還觸發(fā)超時,那么feign是不會進行重試

  • feign的超時配置方式 1(顯式的指定超時時間):
feign:
#feign集成sentinel服務(wù)保護(斷路器,防止雪崩)
  sentinel:
    enabled: true
  client:
    config:
   #feign延長超時時間
      default: #表示應(yīng)用到所有服務(wù)提供方(也可以指定服務(wù)名稱)
        connectTimeout: 4000
        readTimeout: 4000

feign的超時配置方式 2(精準設(shè)置接口超時配置):弊端:有時候需要每個接口都配置

2.1為feign接口添加Request.Options options參數(shù)

@GetMapping(value="/api/xx")
public abstract Resulttest(Request.Optionsoptions) ;

2.2遠程調(diào)用時候傳遞Request.Options參數(shù),直接new出來就行

Request.Optionsoptions=newRequest.Options(3, TimeUnit.MILLISECONDS, 3, TimeUnit.MILLISECONDS, true);
//參數(shù)說明:
connectTimeout:連接超時時間\時間單位
readTimeout :讀取數(shù)據(jù)超時時間\時間單位
followRedirects :是否允許重定向

伴隨問題:如果顯示指定后如果還觸發(fā)超時,那么feign是不會進行重試但是對于特殊業(yè)務(wù)場景需要進行重試時

解決方案:自定義重試器

重試原理:執(zhí)行業(yè)務(wù)方法的時候報錯了,那么此時就需要調(diào)用重試器中的continueOrPropagate方法。如果該方法產(chǎn)生了異常,那么重試結(jié)束;如果

該方法沒有產(chǎn)生異常那么則進行重試。

如果我們想在自定義超時時間的同時使用重試機制,那么此時就需要自定義重試器。

  • 步鄹1:自定義一個類實現(xiàn)Retryer重寫方法
public class MyRetryer implements Retryer {
    
    private intstart=1 ;
    private intend=3 ;  //規(guī)定重試次數(shù)
?
?
    /**
     * 遠程調(diào)用失敗以后,會調(diào)用重試器的這個方法
     */
    @Override//判斷是否需要重試
    public void continueOrPropagate(RetryableExceptione) {
        
        if(start>end) {
            throwe ;
        }
        start++ ;
        System.out.println("MyRetryer...continueOrPropagate....");
    }
?
    @Override//返回對象
    public Retryer clone() {
        return new MyRetryer();
    }
    
}

步鄹2:將自定義的重試器配置給feign

feign:
#feign集成sentinel服務(wù)保護(斷路器,防止雪崩)
  sentinel:
    enabled: true
  client:
    config:
   #feign延長超時時間
      default: #表示應(yīng)用到所有服務(wù)提供方(也可以指定服務(wù)名稱)
       # connectTimeout: 4000
       # readTimeout: 4000       
        retryer: com.aa.bb.MyRetryer #配置重試器,全類名

可以將配置抽取到nacos中心,哪里需要哪里添加

  #feign集成sentinel服務(wù)保護(斷路器,防止雪崩)
feign:
  sentinel:
    enabled: true
  client:
    config:
   #feign延長超時時間
      default:
        connectTimeout: 1500
        readTimeout: 1500
        retryer: com.xx.feign.retry.FeignClientRetryer

#配置ribbon的饑餓加載
ribbon:
  eager-load:
    enabled: true
    clients: 微服務(wù),微服務(wù)2,微服務(wù)3

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java虛擬機內(nèi)存結(jié)構(gòu)及編碼實戰(zhàn)分享

    Java虛擬機內(nèi)存結(jié)構(gòu)及編碼實戰(zhàn)分享

    這篇文章主要介紹了Java虛擬機內(nèi)存結(jié)構(gòu)及編碼實戰(zhàn)分享,文章圍繞詳細主題展開相關(guān)資料具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • Java中instanceof 關(guān)鍵字的使用

    Java中instanceof 關(guān)鍵字的使用

    instanceof通過返回一個布爾值來指出,某個對象是否是某個特定類或者是該特定類的子類的一個實例,本文就來詳細的介紹一下instanceof 關(guān)鍵字的使用,感興趣的可以了解一下
    2023-10-10
  • Java中高效的判斷數(shù)組中某個元素是否存在詳解

    Java中高效的判斷數(shù)組中某個元素是否存在詳解

    相信大家在操作Java的時候,經(jīng)常會要檢查一個數(shù)組(無序)是否包含一個特定的值?這是一個在Java中經(jīng)常用到的并且非常有用的操作。同時,這個問題在Stack Overflow中也是一個非常熱門的問題。本文將分析幾種常見用法及其時間成本,有需要的朋友們可以參考借鑒。
    2016-11-11
  • Java常用時間工具類總結(jié)(珍藏版)

    Java常用時間工具類總結(jié)(珍藏版)

    這篇文章主要為大家詳細介紹了Java中一些常用時間工具類的使用示例代碼,文中的代碼簡潔易懂,對我們學習Java有一定幫助,需要的可以參考一下
    2022-07-07
  • Java源碼解析之ClassLoader

    Java源碼解析之ClassLoader

    在看系統(tǒng)啟動的流程中看到了ClassLoader使用,重新溫故下ClassLoader流程和原理,文中有非常詳細的代碼示例,對正在學習java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • 淺談DetachedCriteria和Criteria的使用方法(必看)

    淺談DetachedCriteria和Criteria的使用方法(必看)

    下面小編就為大家?guī)硪黄獪\談DetachedCriteria和Criteria的使用方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • IDEA如何快速構(gòu)建UML類圖

    IDEA如何快速構(gòu)建UML類圖

    UML類圖是一種用于描述軟件系統(tǒng)靜態(tài)結(jié)構(gòu)的可視化建模語言,它通過類、屬性、方法以及它們之間的關(guān)系來表示系統(tǒng),類圖主要用于面向?qū)ο笤O(shè)計,幫助理解系統(tǒng)的結(jié)構(gòu)和類之間的關(guān)系,IDEA提供了自動生成UML類圖的功能,但其局限性在于只能基于現(xiàn)有代碼生成
    2025-02-02
  • Java設(shè)計模式UML之類圖精解

    Java設(shè)計模式UML之類圖精解

    在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且?guī)в蟹指罹€的矩形來表示,比如下圖表示一個Employee類,它包含name,age和email這3個屬性,以及modifyInfo()方法
    2022-02-02
  • SpringBoot統(tǒng)一返回格式的方法詳解

    SpringBoot統(tǒng)一返回格式的方法詳解

    今天小編主要是和大家分享一個讓代碼變得更簡潔的小技巧:統(tǒng)一返回格式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-08-08
  • Java進階之Object類及常用方法詳解

    Java進階之Object類及常用方法詳解

    Object?類是?Java?默認提供的一個類,是所有?Java?類的祖先類,每個類都使用?Object?作為父類。本文就來和大家聊聊Object類的常用方法,希望對大家有所幫助
    2023-01-01

最新評論

南开区| 鹿泉市| 福海县| 隆尧县| 来安县| 澳门| 拉萨市| 张家界市| 滦平县| 阿坝县| 东台市| 镶黄旗| 岳阳县| 怀仁县| 乌拉特后旗| 大余县| 湾仔区| 佛山市| 涿鹿县| 西华县| 治多县| 翼城县| 苏州市| 定西市| 根河市| 上犹县| 无棣县| 贵州省| 三亚市| 焉耆| 惠安县| 淮北市| 安国市| 牟定县| 澳门| 宁陕县| 安陆市| 宜宾市| 盈江县| 钟祥市| 赤壁市|