SpringCloud中怎么配置Feign組成-創(chuàng)新互聯(lián)

Spring Cloud中怎么配置Feign組成,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的扶余網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Feign的組成

接口
 
作用
 
默認(rèn)值
 
Feign.Builder
 
Feign的入口
 
Feign.Builder
 
Client
 
Feign底層用什么去請求
 
和Ribbon配合時:LoadBalancerFeignClient
 不和Ribbon配合時:Fgien.Client.Default
Contract
 
契約,注解支持
 
SpringMVCContract
 
Encoder
 
解碼器,用于將獨(dú)享轉(zhuǎn)換成HTTP請求消息體
 
SpringEncoder
 
Decoder
 
編碼器,將相應(yīng)消息體轉(zhuǎn)成對象
 
ResponseEntityDecoder
 
Logger
 
日志管理器
 
Slf4jLogger
 
RequestInterceptor
 
用于為每個請求添加通用邏輯(攔截器,例子:比如想給每個請求都帶上heared)
 

Feign的日記級別

日志級別
 
打印內(nèi)容
 
NONE(默認(rèn))
 
不記錄任何日志
 
BASIC
 
僅記錄請求方法,URL,響應(yīng)狀態(tài)代碼以及執(zhí)行時間(適合生產(chǎn)環(huán)境)
 
HEADERS
 
記錄BASIC級別的基礎(chǔ)上,記錄請求和響應(yīng)的header
 
FULL
 
記錄請求和弦ineader,body和元數(shù)據(jù)

首先如何整合Feign

遵循SpringBoot的三板斧第一步:加依賴

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

第二步:寫注解

@EnableFeignClients //在啟動類上加

第三步:寫配置

如何給Feign添加日志級別

細(xì)粒度

方式一:代碼實(shí)現(xiàn)第一步:添加Feign配置類,可以添加在主類下,但是不用添加@Configuration。如果添加了@Configuration而且又放在了主類之下,那么就會所有Feign客戶端實(shí)例共享,同Ribbon配置類一樣父子上下文加載沖突;如果一定添加@Configuration,就放在主類加載之外的包。建議還是不用加@Configuration。

public class FeignConfig {
  @Bean
  public Logger.Level Logger() {
    return Logger.Level.FULL;
  }
}

第二步:給@FeignClient添加配置類

//@FeignClient configuration = GoodsFeignConfig.class 細(xì)粒度配置,指定配置類
@FeignClient(name = "goods", configuration = FeignConfig.class)

第四步:寫配置

logging:
 level:
  com.xxx.xxx.FeignAPI: DEBUG #需要將FeignClient接口全路徑寫上# 開啟日志 格式為logging.level. Feign客戶端路徑

方式二:配置屬性實(shí)現(xiàn)

feign:
 client:
  config:
   #想要調(diào)用的微服務(wù)名稱
   server-1:
    loggerLevel: FULL

全局配置

方式一:代碼實(shí)現(xiàn)添加了@Configuration放在了主類之下,那么就會所有Feign客戶端實(shí)例共享,同Ribbon配置類一樣父子上下文加載沖突;讓父子上下文ComponentScan重疊(強(qiáng)烈不建議)唯一正確方式

//在啟動類上為@EnableFeignClients注解添加defaultConfiguration配置
@EnableFeignClients(defaultConfiguration = FeignConfig.class)

方式二:配置屬性實(shí)現(xiàn)

feign:
 client:
  config:
   #將調(diào)用的微服務(wù)名稱改成default就配置成全局的了
   default:
    loggerLevel: FULL

Feign支持的配置項(xiàng)

代碼方式

配置項(xiàng)
 
作用
 
Logger.Level
 
指定日志級別
 
Retryer
 
指定重試策略
 
ErrorDecoder
 
指定錯誤解碼器
 
Request.Options
 
超時時間
 
Collection
 
攔截器
 
SetterFactory
 
用于設(shè)置Hystrix的配置屬性,F(xiàn)gien整合Hystrix才會用

配置屬性

feign:
 client:
  config:
   feignName:
    connectTimeout: 5000 # 相當(dāng)于Request.Optionsn 連接超時時間
    readTimeout: 5000   # 相當(dāng)于Request.Options 讀取超時時間
    loggerLevel: full   # 配置Feign的日志級別,相當(dāng)于代碼配置方式中的Logger
    errorDecoder: com.example.SimpleErrorDecoder # Feign的錯誤解碼器,相當(dāng)于代碼配置方式中的ErrorDecoder
    retryer: com.example.SimpleRetryer # 配置重試,相當(dāng)于代碼配置方式中的Retryer
    requestInterceptors: # 配置攔截器,相當(dāng)于代碼配置方式中的RequestInterceptor
     - com.example.FooRequestInterceptor
     - com.example.BarRequestInterceptor
    # 是否對404錯誤解碼
    decode404: false
    encode: com.example.SimpleEncoder
    decoder: com.example.SimpleDecoder
    contract: com.example.SimpleContract

Feign還支持對請求和響應(yīng)進(jìn)行GZIP壓縮,以提高通信效率,配置方式如下:

# 配置請求GZIP壓縮
feign.compression.request.enabled=true
# 配置響應(yīng)GZIP壓縮
feign.compression.response.enabled=true
# 配置壓縮支持的MIME TYPE
feign.compression.request.mime-types=text/xml,application/xml,application/json
# 配置壓縮數(shù)據(jù)大小的下限
feign.compression.request.min-request-size=2048

Ribbon配置 VS Feign配置

粒度
 
Ribbon
 
Feign
 
代碼局部
 
@RibbonClient(configuration=RibbonConfig.class),RibbonConfig類必須加@Configuration,且必須放在父上下文無法掃到的包下
 
@FeignClient(configuration=FeignConfig.class),F(xiàn)eignConfig類的@Configuration可以不加(可選),如果有,必須放在父上下文無法掃到的包下
 
代碼全局
 
@RibbonClients(defaultConfigurtion=RibbonConfig.class)
 
@EnableFeignClients(defaultConfiguration = FeignConfig.class)
 ...
 
配置屬性局部
 
.ribbon.NFLoadBalancerClassName
 ...
 
feign.client.config..loggerLevel 
 ...
 
配置屬性全局
 
feign.client.config.default.loggerLevel

Feign 代碼方式 VS 配置屬性方式

配置方式
 
有點(diǎn)
 
缺點(diǎn)
 
代碼配置
 
基于代碼,更加靈活
 
如果Feign的配置類加了@Configuration注解,需注意父子上下文,線上修改需要重打包,發(fā)布
 
屬性配置
 
易上手
 配置更加直觀
 線上修改無需重新打包,發(fā)布
 優(yōu)先級更高
 
極端場景下沒有代碼配置更加靈活

看完上述內(nèi)容,你們掌握Spring Cloud中怎么配置Feign組成的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享文章:SpringCloud中怎么配置Feign組成-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article28/csppjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站設(shè)計、品牌網(wǎng)站制作網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司