亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ò)程

一開(kāi)始項(xiàng)目只是在application文件里面進(jìn)行了全局的簡(jiǎn)單配置,搜索了一下,添加了一個(gè)配置類(lèi)寫(xiě)在@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)并沒(méi)有解決問(wèn)題,還是在超時(shí),于是點(diǎn)進(jìn)報(bào)錯(cuò)的源碼debug了一下

image.png

image.png

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

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

image.png

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

image.png

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

image.png

這里的configuration是Autowired注入進(jìn)去的,但是最后option卻沒(méi)有拿到,于是考慮難道是配置沒(méi)注入進(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)致我們自己寫(xiě)的配置失效

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

image.png

看代碼,只要FeignClient注解的contextId有值,就會(huì)直接取contextId而不取value或者name,那么給需要特殊配置的Client寫(xiě)上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è)坑要注意,配置類(lèi)不能有@Configuration注解,否則會(huì)被全局掃描到,變成了全局配置。去掉@Configuration后測(cè)試,問(wèn)題解決。

問(wèn)題解決

綜上

因?yàn)榕渲梦募渲玫膬?yōu)先級(jí)高于配置類(lèi),所以刪掉application文件里的配置,采用配置類(lèi)配置。
在項(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)文章

  • mybatisPlus返回Map類(lèi)型的集合

    mybatisPlus返回Map類(lèi)型的集合

    本文主要介紹了mybatisPlus返回Map類(lèi)型的集合,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • idea啟動(dòng)項(xiàng)目報(bào)端口號(hào)沖突或被占用的解決方法

    idea啟動(dòng)項(xiàng)目報(bào)端口號(hào)沖突或被占用的解決方法

    這篇文章主要介紹了idea啟動(dòng)項(xiàng)目報(bào)端口號(hào)沖突或被占用的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Java垃圾回收之標(biāo)記清除算法詳解

    Java垃圾回收之標(biāo)記清除算法詳解

    今天小編就為大家分享一篇關(guān)于Java垃圾回收之標(biāo)記清除算法詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Java多線程之線程安全問(wèn)題詳情

    Java多線程之線程安全問(wèn)題詳情

    這篇文章主要介紹了Java多線程之線程安全問(wèn)題詳情,線程安全問(wèn)題是指因多線程搶占式執(zhí)行而導(dǎo)致程序出現(xiàn)bug的問(wèn)題。內(nèi)容介紹詳細(xì)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • java編程實(shí)現(xiàn)獲取服務(wù)器IP地址及MAC地址的方法

    java編程實(shí)現(xiàn)獲取服務(wù)器IP地址及MAC地址的方法

    這篇文章主要介紹了java編程實(shí)現(xiàn)獲取機(jī)器IP地址及MAC地址的方法,實(shí)例分析了Java分別針對(duì)單網(wǎng)卡及多網(wǎng)卡的情況下獲取服務(wù)器IP地址與MAC地址的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • Spring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解

    Spring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解

    下面小編就為大家?guī)?lái)一篇Spring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 深入理解Java設(shè)計(jì)模式之外觀模式

    深入理解Java設(shè)計(jì)模式之外觀模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之外觀模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • Java面試題沖刺第二十三天--算法(2)

    Java面試題沖刺第二十三天--算法(2)

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于算法的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式

    Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)文件復(fù)制及文件夾復(fù)制幾種常用的方式,java復(fù)制文件的方式其實(shí)有不少種,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • springboot整合mybatis的超詳細(xì)過(guò)程(配置模式+注解模式)

    springboot整合mybatis的超詳細(xì)過(guò)程(配置模式+注解模式)

    這篇文章主要介紹了springboot整合mybatis的詳細(xì)過(guò)程(配置模式+注解模式),這里我使用的是配置模式+注解模式所以需要配置全局文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評(píng)論