SpringCloud微服務基礎4 Feign

2021-08-31 03:30:16 字數 2799 閱讀 4614

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是一套目前非常完整的微服務解決方案框架,...