Spring Cloud中怎么配置Feign組成,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的扶余網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!Feign的組成
接口 | 作用 | 默認(rèn)值 |
---|---|---|
Feign.Builder | Feign的入口 | Feign.Builder |
Client | Feign底層用什么去請(qǐng)求 | 和Ribbon配合時(shí):LoadBalancerFeignClient 不和Ribbon配合時(shí):Fgien.Client.Default |
Contract | 契約,注解支持 | SpringMVCContract |
Encoder | 解碼器,用于將獨(dú)享轉(zhuǎn)換成HTTP請(qǐng)求消息體 | SpringEncoder |
Decoder | 編碼器,將相應(yīng)消息體轉(zhuǎn)成對(duì)象 | ResponseEntityDecoder |
Logger | 日志管理器 | Slf4jLogger |
RequestInterceptor | 用于為每個(gè)請(qǐng)求添加通用邏輯(攔截器,例子:比如想給每個(gè)請(qǐng)求都帶上heared) | 無 |
Feign的日記級(jí)別
日志級(jí)別 | 打印內(nèi)容 |
---|---|
NONE(默認(rèn)) | 不記錄任何日志 |
BASIC | 僅記錄請(qǐng)求方法,URL,響應(yīng)狀態(tài)代碼以及執(zhí)行時(shí)間(適合生產(chǎn)環(huán)境) |
HEADERS | 記錄BASIC級(jí)別的基礎(chǔ)上,記錄請(qǐng)求和響應(yīng)的header |
FULL | 記錄請(qǐng)求和弦ineader,body和元數(shù)據(jù) |
首先如何整合Feign
遵循SpringBoot的三板斧第一步:加依賴
org.springframework.cloud spring-cloud-starter-openfeign
第二步:寫注解
@EnableFeignClients //在啟動(dòng)類上加
第三步:寫配置
如何給Feign添加日志級(jí)別
細(xì)粒度
方式一:代碼實(shí)現(xiàn)第一步:添加Feign配置類,可以添加在主類下,但是不用添加@Configuration。如果添加了@Configuration而且又放在了主類之下,那么就會(huì)所有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放在了主類之下,那么就會(huì)所有Feign客戶端實(shí)例共享,同Ribbon配置類一樣父子上下文加載沖突;讓父子上下文ComponentScan重疊(強(qiáng)烈不建議)唯一正確方式
//在啟動(dò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 | 指定日志級(jí)別 |
Retryer | 指定重試策略 |
ErrorDecoder | 指定錯(cuò)誤解碼器 |
Request.Options | 超時(shí)時(shí)間 |
Collection | 攔截器 |
SetterFactory | 用于設(shè)置Hystrix的配置屬性,F(xiàn)gien整合Hystrix才會(huì)用 |
配置屬性
feign: client: config: feignName: connectTimeout: 5000 # 相當(dāng)于Request.Optionsn 連接超時(shí)時(shí)間 readTimeout: 5000 # 相當(dāng)于Request.Options 讀取超時(shí)時(shí)間 loggerLevel: full # 配置Feign的日志級(jí)別,相當(dāng)于代碼配置方式中的Logger errorDecoder: com.example.SimpleErrorDecoder # Feign的錯(cuò)誤解碼器,相當(dāng)于代碼配置方式中的ErrorDecoder retryer: com.example.SimpleRetryer # 配置重試,相當(dāng)于代碼配置方式中的Retryer requestInterceptors: # 配置攔截器,相當(dāng)于代碼配置方式中的RequestInterceptor - com.example.FooRequestInterceptor - com.example.BarRequestInterceptor # 是否對(duì)404錯(cuò)誤解碼 decode404: false encode: com.example.SimpleEncoder decoder: com.example.SimpleDecoder contract: com.example.SimpleContract
Feign還支持對(duì)請(qǐng)求和響應(yīng)進(jìn)行GZIP壓縮,以提高通信效率,配置方式如下:
# 配置請(qǐng)求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)先級(jí)更高 | 極端場景下沒有代碼配置更加靈活 |
看完上述內(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)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。