spring cloud feign是一套基於netflix feign實現的宣告式服務呼叫客戶端。它使得編寫web服務客戶端變得更加簡單。我們只需要通過建立介面並用註解來配置它既可完成對web服務介面的繫結。它具備可插拔的註解支援,包括feign註解、jax-rs註解。它也支援可插拔的編碼器和解碼器。spring cloud feign還擴充套件了對spring mvc註解的支援,同時還整合了ribbon和eureka來提供均衡負載的http客戶端實現。
feign可以把rest的請求進行隱藏,偽裝成類似springmvc的controller一樣。你不用再自己拼接url,拼接引數等等操作,一切都交給feign去做。
【注意】feign中已經自動整合了ribbon負載均衡;同時feign預設也有對hystix的整合(預設是關閉hystix)。
org.springframework.cloud
spring-cloud-starter-openfeign
在消費者新增乙個介面,該介面可以理解為在消費者中的dao層,內容如下:
@feignclient("user-service")
public inte***ce userfeignclient
修改消費者的service層**如下:
@service
public class userservice );
return users;
}}
@enablediscoveryclient
@enablehystrix
@enablefeignclients // 開啟feign功能
public static void main(string args) }
發現resttemplate的註冊被我刪除了。feign中已經自動整合了ribbon負載均衡,因此我們不需要自己定義resttemplate了。
feign:
hystrix:
enabled: true # 開啟feign的熔斷功能
但是,feign中的fallback配置不像ribbon中那樣簡單了;需要我們對消費者進行改造。操作步驟如下:
(1)第一步:首先,我們要定義乙個類,實現剛才編寫的userfeignclient,作為fallback的處理類;**如下:
@component
public class userfeignclientfallback implements userfeignclient
}
(2)第二步:然後在userfeignclient中,指定剛才編寫的實現類;**如下:
@feignclient(value = "user-service", fallback = userfeignclientfallback.class)
public inte***ce userfeignclient
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)設定cn.jun包下的日誌級別都為debug ;
logging:
level:
cn.jun: debug
2)編寫配置類,定義日誌級別
feign支援4種級別:
(1)none:不記錄任何日誌資訊,這是預設值。
(2)basic:僅記錄請求的方法,url以及響應狀態碼和執行時間
(3)headers:在basic的基礎上,額外記錄了請求和響應的頭資訊
(4)full:記錄所有請求和響應的明細,包括頭資訊、請求體、元資料。
@configuration
public class feignconfig
}
3)在feignclient中指定配置類:
@feignclient(value = "user-service", fallback = userfeignclientfallback.class, configuration = feignconfig.class)
public inte***ce userfeignclient
SpringCloud 微服務與微服務對接心德
對方已經提供好乙個api文件,然後傳一堆傳輸,返回給我一些資訊。如下 我這邊建立實體類,返回值這些東西,如下 介面如下 feignclient還有以下標籤 name 指定feignclient的名稱,如果專案使用了ribbon,name屬性會作為微服務的名稱,用於服務發現 url url一般用於除錯...
微服務架構 spring cloud
微服務架構搭建步驟 1.建立服務註冊中心 1 填加依賴 org.springframework.cloudgroupid spring cloud starter eureka serverartifactid dependency org.springframework.cloudgroupid ...
SpringCloud微服務框架
因為springcloud出現,對微服務技術提供了非常大的幫助,因為springcloud 提供了一套完整的微服務解決方案,不像其他框架只是解決了微服務中某個問題.springcloud是基於springboot基礎之上開發的微服務框架,springcloud是一套目前非常完整的微服務解決方案框架,...