Spring Cloud系列之介面偽裝 Feign

2021-10-10 04:27:06 字數 2500 閱讀 6793

feign可以把rest的請求進行隱藏,偽裝成類似springmvc的controller一樣。你不用再自己拼接url,拼接引數等等操作,一切都交給feign去做。  

org.springframework.cloud

spring-cloud-starter-openfeign

@enablediscoveryclient

@enablehystrix

@enablefeignclients // 開啟feign功能

public static void main(string args) }

resttemplate的註冊被刪除了。feign中已經自動整合了ribbon負載均衡,因此我們更不需要自己定義resttemplate了 。

@service

public class userservice );

return users;

}}

@feignclient("user-service")

public inte***ce userfeignclient

feign中本身已經整合了ribbon依賴和自動配置 ,可以通過ribbon.xx來進行全域性配置。也可以通過服務名.ribbon.xx來對指定服務配置:

user-service:

ribbon:

connecttimeout: 250 # 連線超時時間(ms)

readtimeout: 1000 # 通訊超時時間(ms)

oktoretryonalloperations: true # 是否對所有操作重試

maxautoretriesnextserver: 1 # 同一服務不同例項的重試次數

maxautoretries: 1 # 同一例項的重試次數

feign預設也有對hystrix的整合 (但依賴spring-cloud-starter-netflix-hystrix還是要引入的,ribbon是直接引入的,hystrix是橋接引入的),只不過,預設情況下是關閉的。我們需要通過下面的引數來開啟:

feign:

hystrix:

enabled: true # 開啟feign的熔斷功能

spring cloud feign 支援對請求和響應進行gzip壓縮,以減少通訊過程中的效能損耗。通過下面的引數即可開啟請求與響應的壓縮功能:

feign:

compression:

request:

enabled: true # 開啟請求壓縮

response:

enabled: true # 開啟響應壓縮

同時,我們也可以對請求的資料型別,以及觸發壓縮的大小下限進行設定:

feign:

compression:

request:

enabled: true # 開啟請求壓縮

min-request-size: 2048 # 設定觸發壓縮的大小下限

注:上面的資料型別、壓縮大小下限均為預設值。

通過logging.level.xx=debug來設定日誌級別。然而這個對fegin客戶端而言不會產生效果。因為@feignclient註解修改的客戶端在被**時,都會建立乙個新的fegin.logger例項。我們需要額外指定這個日誌的級別才可以。

1)設定com.leyou包下的日誌級別都為debug

logging:

level:

com.leyou: debug

2)編寫配置類,定義日誌級別

@configuration

public class feignconfig

}

這裡指定的level級別是full,feign支援4種級別:

3)在feignclient中指定配置類:

@feignclient(value = "user-service", fallback = userfeignclientfallback.class, configuration = feignconfig.class)

public inte***ce userfeignclient

feign預設使用jdk的httpclient。okhttp效能強於jdk的httpclient;

開啟okhttp,關閉jdk的httpclient:

引入依賴:

Springcloud學習系列之Zuul的使用

zuul的作用是服務閘道器,使用者的請求先通過zuul,由zuul 至各服務。由此,zuul可以做很多任務作,如校驗,鑑權等。需要zuul註冊進eureka註冊中心 org.springframework.cloudgroupid spring cloud starter netflix zuula...

Springcloud 系列之feign負載均衡

feign是宣告性的web服務客戶端。它使編寫web服務客戶端更加容易。要使用feign,請建立乙個介面並對其進行注釋。它具有可插入的注釋支援,包括feign注釋和jax rs注釋。feign還支援可插拔編碼器和解碼器。spring cloud新增了對spring mvc注釋的支援,並支援使用spr...

SpringCloud系列之zuul路由

zuul包含了對請求的路由和過濾兩個最主要的功能 其中路由功能負責將外部請求 到具體的微服務例項上,是實現外部訪問統一入口的基礎而過濾器功能則負責對請求的處理過程進行干預,是實現請求校驗 服務聚合等功能的基礎.zuul和eureka進行整合,將zuul自身註冊為eureka服務治理下的應用,同時從e...