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

SpringCloud對服務(wù)內(nèi)某個client進行單獨配置的操作步驟

 更新時間:2023年10月19日 08:59:49   作者:LxyrichBos  
我們的微服務(wù)項目用的是springCloud,某個微服務(wù)接口因為數(shù)據(jù)處理量大,出現(xiàn)了接口超時的情況,我們需要單獨修改這一個feignClient的超時時間,所以本文介紹了SpringCloud對服務(wù)內(nèi)某個client進行單獨配置的操作步驟,需要的朋友可以參考下

問題

我們的微服務(wù)項目用的是springCloud,某個微服務(wù)接口因為數(shù)據(jù)處理量大,出現(xiàn)了接口超時的情況,我們需要單獨修改這一個feignClient的超時時間。

解決過程

一開始項目只是在application文件里面進行了全局的簡單配置,搜索了一下,添加了一個配置類寫在@FeignClient注解的參數(shù)里

@Configuration
public class MyFeignConfig {

    @Bean
    Request.Options feignOptions(){
        return new Request.Options(20000, TimeUnit.MILLISECONDS,20000, TimeUnit.MILLISECONDS,false);
    }

}

@FeignClient(value = "app", configuration = {FeignClientConfig.class,MyFeignConfig.class}, fallbackFactory = ApprovalClientFallBack.class)
public interface AppClient {}

測試后發(fā)現(xiàn)并沒有解決問題,還是在超時,于是點進報錯的源碼debug了一下

image.png

image.png

發(fā)現(xiàn)這個option并不是我上面配置類配置的值

一路往上點,找到option被寫入進去的地方FeignClientFactoryBean#configureUsingConfiguration

image.png

可以看到這里的option是通過context拿到的,接著點進去

image.png

這個類就是傳遞配置的地方,一個name有一個配置列表

image.png

這里的configuration是Autowired注入進去的,但是最后option卻沒有拿到,于是考慮難道是配置沒注入進去?

找到@FeignClient的參數(shù)注冊的代碼FeignClientsRegistrar#registerFeignClients

image.png

注意這里的registerClientConfiguration和getClientName方法,getClientName拿到每個FeignClient的name,然后把configuration注入到那個name下。問題出現(xiàn)了A服務(wù)有很多個FeignClient,我只需要對其中的一個進行特殊配置,但是所有的FeignClient注解的value值都是一樣的,這里獲得的name也就是一樣的,那么后面注冊的configuration就會把前面的覆蓋掉,導(dǎo)致我們自己寫的配置失效

點進getClientName方法

image.png

看代碼,只要FeignClient注解的contextId有值,就會直接取contextId而不取value或者name,那么給需要特殊配置的Client寫上contextId是不是配置就生效了

@FeignClient(value = "app",contextId = "appSpecial",  configuration = {FeignClientConfig.class,MyFeignConfig.class}, fallbackFactory = ApprovalClientFallBack.class)
public interface AppClient {}

測試后發(fā)現(xiàn)所有服務(wù)的超時時間都變成20000了
這里有個坑要注意,配置類不能有@Configuration注解,否則會被全局掃描到,變成了全局配置。去掉@Configuration后測試,問題解決。

問題解決

綜上

因為配置文件配置的優(yōu)先級高于配置類,所以刪掉application文件里的配置,采用配置類配置。
在項目統(tǒng)一的FeignClientConfig里加上統(tǒng)一的超時時間配置

@Configuration
public class FeignClientConfig {

    /**
     * 配置header
     */
    @Bean
    public RequestInterceptor requestInterceptor() {
        return new FeignClientInterceptor();
    }
    /**
     * 配置統(tǒng)一的超時時間
     */
    @Bean
    Request.Options feignOptions(){
        return new Request.Options(10000, TimeUnit.MILLISECONDS,10000, TimeUnit.MILLISECONDS,false);
    }
}

對需要單獨配置的client添加自定義配置

public class MyFeignConfig {
    @Bean
    Request.Options feignOptions(){
        return new Request.Options(20000, TimeUnit.MILLISECONDS,20000, TimeUnit.MILLISECONDS,false);
    }

}

@FeignClient(value = "app", contextId = "appSpecial", configuration = {FeignClientConfig.class,
        MyFeignConfig.class}, fallbackFactory = ClientFallBack.class)
public interface AppClient {}

以上就是SpringCloud對服務(wù)內(nèi)某個client進行單獨配置的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud對client單獨配置的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實現(xiàn)Date轉(zhuǎn)換為string的五種常見實現(xiàn)方法

    java實現(xiàn)Date轉(zhuǎn)換為string的五種常見實現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)Date轉(zhuǎn)換為string的五種常見實現(xiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-01-01
  • Spring中的REST分頁的實現(xiàn)代碼

    Spring中的REST分頁的實現(xiàn)代碼

    本文將介紹在REST API中實現(xiàn)分頁的基礎(chǔ)知識。我們將專注于使用Spring Boot和Spring Data 在Spring MVC中構(gòu)建REST分頁,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 淺談springboot如何保證多線程安全

    淺談springboot如何保證多線程安全

    這篇文章主要介紹了springboot如何保證多線程安全,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JAVA中ListIterator和Iterator詳解與辨析(推薦)

    JAVA中ListIterator和Iterator詳解與辨析(推薦)

    這篇文章主要介紹了JAVA中ListIterator和Iterator詳解與辨析,需要的朋友可以參考下
    2017-04-04
  • java8 集合之Stack詳解及實例

    java8 集合之Stack詳解及實例

    這篇文章主要介紹了java8 集合之Stack詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • idea 默認(rèn)路徑修改從C盤更改到D盤

    idea 默認(rèn)路徑修改從C盤更改到D盤

    本文主要介紹了idea 默認(rèn)路徑修改從C盤更改到D盤,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • java 將byte中的有效長度轉(zhuǎn)換為String的實例代碼

    java 將byte中的有效長度轉(zhuǎn)換為String的實例代碼

    下面小編就為大家?guī)硪黄猨ava 將byte中的有效長度轉(zhuǎn)換為String的實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • java接口冪等性的實現(xiàn)方式

    java接口冪等性的實現(xiàn)方式

    本文介紹了在不同層面上實現(xiàn)Java接口冪等性的方法,包括使用冪等表、Nginx+Lua和Redis、以及SpringAOP,通過這些方法,可以確保接口在多次請求時只執(zhí)行一次,避免重復(fù)處理和數(shù)據(jù)不一致,每種方法都有其適用場景和優(yōu)勢,通過實際測試驗證了冪等性邏輯的有效性
    2025-01-01
  • 詳細(xì)分析java并發(fā)之volatile關(guān)鍵字

    詳細(xì)分析java并發(fā)之volatile關(guān)鍵字

    這篇文章主要介紹了java并發(fā)之volatile關(guān)鍵字的的相關(guān)資料,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 詳解如何在spring boot中使用spring security防止CSRF攻擊

    詳解如何在spring boot中使用spring security防止CSRF攻擊

    這篇文章主要介紹了詳解如何在spring boot中使用spring security防止CSRF攻擊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論

岑巩县| 雷州市| 房山区| 阿拉善盟| 武城县| 赣州市| 兴安县| 安国市| 拜泉县| 那曲县| 思茅市| 景德镇市| 泸定县| 丹东市| 六安市| 阜阳市| 山东省| 漳州市| 雷州市| 崇阳县| 万山特区| 拉孜县| 资源县| 张家港市| 瓦房店市| 哈巴河县| 夏河县| 苍山县| 高邑县| 安康市| 建始县| 深水埗区| 鲁山县| 金山区| 淳化县| 平远县| 建湖县| 保康县| 阿图什市| 全椒县| 旺苍县|