javascript
controller调用controller的方法_SpringCloud(5):Feign整合Ribbon和Hystrix来进行远程调用与服务熔断...
Feign
前面我們雖然使用了Ribbon和Hystrix進行了負載均衡和服務熔斷,但是我們的消費方代碼中由于要調用提供方的服務,比如:
String user = this.restTemplate.getForObject("http://service-provider/user/" + id, String.class);使用了鏈接直接拼接的方式,這樣的硬編碼不太優雅,這樣我們就需要使用Feign。
Feign在英語中是偽裝的意思,這里Feign可以把Rest的請求進行隱藏,偽裝成類似SpringMVC的Controller一樣。
這樣我們就不用再自己拼接url,拼接參數等等操作,一切都交給Feign去做。
Feign也是Netflix開發的,是一種聲明式、模板化的HTTP客戶端,Feign可以讓我們更加便捷地調用HTTP API。
Feign支持自帶注解或JAX-RS注解。SpringCloud對Feign進行了增強,使Feign支持SpringMVC注解,并整合了Ribbon和Erueka。
Feign使用:
1.引入openFeign啟動器
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>2.feign.hystrix.enable=true,開啟feign的熔斷功能(Feign默認不開啟熔斷)
feign:hystrix:enabled: true # 開啟Feign的熔斷功能3.在引導類上 @EnableFeignClients,不需要使用RestTemplate了,feign已經自動集成了Ribbon負載均衡的RestTemplate。
@SpringCloudApplication4.創建一個接口,在接口添加@FeignClient(value="服務id", fallback=實現類.class)。
這是一個接口,Feign會通過動態代理,幫我們生成實現類。這點跟mybatis的mapper很像。
在接口中定義一些方法,這些方法的書寫方式跟之前controller類似。
@FeignClient5.在controller中注入userClient
@Controller6.創建了一個熔斷類,實現feign接口,實現對應的方法,這些實現方法就是熔斷方法
@Component這樣,如果服務正常調用,則正常輸出
如果停掉提供方服務,則會服務熔斷,用戶端提示熔斷信息
設置feign的日志級別
1、首先設置cn.figo包下的日志級別都為debug
logging:level:cn.figo: debug2、編寫Frign配置類,定義日志級別
@Configuration這里指定的Level級別是FULL,Feign支持4種級別:
- NONE:不記錄任何日志信息,這是默認值。
- BASIC:僅記錄請求的方法,URL以及響應狀態碼和執行時間
- HEADERS:在BASIC的基礎上,額外記錄了請求和響應的頭信息
- FULL:記錄所有請求和響應的明細,包括頭信息、請求體、元數據。
3、在FeignClient接口上指定配置類
@FeignClient這樣設置后,可以看到每次訪問的日志
請求壓縮
Spring Cloud Feign 支持對請求和響應進行GZIP壓縮,以減少通信過程中的性能損耗。通過下面的參數即可開啟請求與響應的壓縮功能:
feign:compression:request:enabled: true # 開啟請求壓縮response:enabled: true # 開啟響應壓縮同時,我們也可以對請求的數據類型,以及觸發壓縮的大小下限進行設置:(這里的數據類型、壓縮大小下限均為默認值。)
feign:compression:request:enabled: true # 開啟請求壓縮mime-types: text/html,application/xml,application/json # 設置壓縮的數據類型min-request-size: 2048 # 設置觸發壓縮的大小下限總結
以上是生活随笔為你收集整理的controller调用controller的方法_SpringCloud(5):Feign整合Ribbon和Hystrix来进行远程调用与服务熔断...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-cli 打包部署
- 下一篇: Spring Cloud 微服务架构