中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud Feign的組成和配置方法

發布時間:2021-06-26 14:12:15 來源:億速云 閱讀:239 作者:chen 欄目:大數據

本篇內容介紹了“Spring Cloud Feign的組成和配置方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Feign的組成

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

Feign的日記級別

日志級別打印內容
NONE(默認)不記錄任何日志
BASIC僅記錄請求方法,URL,響應狀態代碼以及執行時間(適合生產環境)
HEADERS記錄BASIC級別的基礎上,記錄請求和響應的header
FULL記錄請求和弦ineader,body和元數據

首先如何整合Feign

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

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

第二步:寫注解

@EnableFeignClients //在啟動類上加

第三步:寫配置



如何給Feign添加日志級別

細粒度

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

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

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

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

第四步:寫配置

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

方式二:配置屬性實現

feign:
  client:
    config:
      #想要調用的微服務名稱
      server-1:
        loggerLevel: FULL
全局配置

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

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

方式二:配置屬性實現

feign:
  client:
    config:
      #將調用的微服務名稱改成default就配置成全局的了
      default:
        loggerLevel: FULL

Feign支持的配置項

代碼方式
配置項作用
Logger.Level指定日志級別
Retryer指定重試策略
ErrorDecoder指定錯誤解碼器
Request.Options超時時間
Collection<RequestInterceptor>攔截器
SetterFactory用于設置Hystrix的配置屬性,Fgien整合Hystrix才會用
配置屬性
feign:
  client:
    config:
      feignName:
        connectTimeout: 5000  # 相當于Request.Optionsn 連接超時時間
        readTimeout: 5000     # 相當于Request.Options 讀取超時時間
        loggerLevel: full     # 配置Feign的日志級別,相當于代碼配置方式中的Logger
        errorDecoder: com.example.SimpleErrorDecoder  # Feign的錯誤解碼器,相當于代碼配置方式中的ErrorDecoder
        retryer: com.example.SimpleRetryer  # 配置重試,相當于代碼配置方式中的Retryer
        requestInterceptors: # 配置攔截器,相當于代碼配置方式中的RequestInterceptor
          - com.example.FooRequestInterceptor
          - com.example.BarRequestInterceptor
		# 是否對404錯誤解碼
        decode404: false
		encode: com.example.SimpleEncoder
		decoder: com.example.SimpleDecoder
		contract: com.example.SimpleContract

Feign還支持對請求和響應進行GZIP壓縮,以提高通信效率,配置方式如下:

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

Ribbon配置 VS Feign配置

粒度RibbonFeign
代碼局部 @RibbonClient(configuration=RibbonConfig.class)RibbonConfig類必須加@Configuration,且必須放在父上下文無法掃到的包下@FeignClient(configuration=FeignConfig.class)FeignConfig類的@Configuration可以不加(可選),如果有,必須放在父上下文無法掃到的包下
代碼全局@RibbonClients(defaultConfigurtion=RibbonConfig.class)@EnableFeignClients(defaultConfiguration = FeignConfig.class)<br>...
配置屬性局部<clientName(服務名稱)>.ribbon.NFLoadBalancerClassName<br>...feign.client.config.<clientName(服務名稱)>.loggerLevel <br>...
配置屬性全局feign.client.config.default.loggerLevel

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

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

優先級:細粒度屬性配置 > 細粒度代碼配置 > 全局屬性配置 > 全局代碼配置

“Spring Cloud Feign的組成和配置方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄陵县| 澄城县| 称多县| 崇仁县| 同江市| 孟村| 云阳县| 定远县| 宜兰县| 广元市| 商河县| 灵武市| 阿尔山市| 林周县| 论坛| 郧西县| 施甸县| 乌拉特后旗| 毕节市| 托克托县| 平舆县| 曲靖市| 梓潼县| 梁河县| 堆龙德庆县| 迁西县| 弥渡县| 永兴县| 霍山县| 体育| 剑河县| 怀化市| 遂平县| 南京市| 麻栗坡县| 信宜市| 沧州市| 兴宁市| 淳安县| 贵阳市| 商洛市|