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

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

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

問(wèn)題

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

解決過(guò)程

一開始項(xiàng)目只是在application文件里面進(jìn)行了全局的簡(jiǎn)單配置,搜索了一下,添加了一個(gè)配置類寫在@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 {}

測(cè)試后發(fā)現(xiàn)并沒有解決問(wèn)題,還是在超時(shí),于是點(diǎn)進(jìn)報(bào)錯(cuò)的源碼debug了一下

image.png

image.png

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

一路往上點(diǎn),找到option被寫入進(jìn)去的地方FeignClientFactoryBean#configureUsingConfiguration

image.png

可以看到這里的option是通過(guò)context拿到的,接著點(diǎn)進(jìn)去

image.png

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

image.png

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

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

image.png

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

點(diǎn)進(jìn)getClientName方法

image.png

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

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

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

問(wèn)題解決

綜上

因?yàn)榕渲梦募渲玫膬?yōu)先級(jí)高于配置類,所以刪掉application文件里的配置,采用配置類配置。
在項(xiàng)目統(tǒng)一的FeignClientConfig里加上統(tǒng)一的超時(shí)時(shí)間配置

@Configuration
public class FeignClientConfig {

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

對(duì)需要單獨(dú)配置的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對(duì)服務(wù)內(nèi)某個(gè)client進(jìn)行單獨(dú)配置的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud對(duì)client單獨(dú)配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    Spring中的REST分頁(yè)的實(shí)現(xiàn)代碼

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

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

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

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

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

    java8 集合之Stack詳解及實(shí)例

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

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

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

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

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

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

    本文介紹了在不同層面上實(shí)現(xiàn)Java接口冪等性的方法,包括使用冪等表、Nginx+Lua和Redis、以及SpringAOP,通過(guò)這些方法,可以確保接口在多次請(qǐng)求時(shí)只執(zhí)行一次,避免重復(fù)處理和數(shù)據(jù)不一致,每種方法都有其適用場(chǎng)景和優(yōu)勢(shì),通過(guò)實(shí)際測(cè)試驗(yàn)證了冪等性邏輯的有效性
    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攻擊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

荣成市| 东乌珠穆沁旗| 阳东县| 铜梁县| 高阳县| 江油市| 长春市| 周至县| 太仓市| 丹凤县| 汾西县| 南投县| 台北县| 鄂尔多斯市| 尉氏县| 江川县| 台安县| 灌南县| 利川市| 衡阳市| 荆门市| 密云县| 新营市| 罗定市| 鹤庆县| 桂平市| 安乡县| 茌平县| 扬州市| 静安区| 呼伦贝尔市| 东台市| 电白县| 南康市| 滦平县| 尼玛县| 海兴县| 杨浦区| 高安市| 景宁| 石城县|