feign是netflix開發的宣告式、模板化的http客戶端, feign可以幫助我們更快捷、優雅地呼叫http api。
在spring cloud中,使用feign非常簡單——建立乙個介面,並在介面上新增一些註解,**就完成了。feign支援多種註解,例如feign自帶的註解或者jax-rs註解等。
spring cloud對feign進行了增強,使feign支援了spring mvc註解,並整合了ribbon和eureka,從而讓feign的使用更加方便。
spring cloud feign是基於netflix feign實現,整合了spring cloud ribbon和spring cloud hystrix,除了提供這兩者的強大功能外,還提供了一種宣告式的web服務客戶端定義的方式。
spring cloud feign幫助我們定義和實現依賴服務介面的定義。在spring cloud feign的實現下,只需要建立乙個介面並用註解方式配置它,即可完成服務提供方的介面繫結,簡化了在使用spring cloud ribbon時自行封裝服務呼叫客戶端的開發量。
spring cloud feign具備可插拔的註解支援,支援feign註解、jax-rs註解和spring mvc的註解。
整合工具:
// 呼叫商品服務的遠端呼叫介面
// 通過註解配置3件事:呼叫哪個服務,呼叫什麼路徑,向這個路徑提交什麼引數
@feignclient
(name=
"item-service"
)public
inte***ce
itemfeignclient")
jsonresult
>
getitems
(@pathvariable string orderid)
;}
org.springframework.cloud<
/groupid>
spring-cloud-starter-openfeign<
/artifactid>
<
/dependency>
eg:
feign 預設啟用了ribbon的負載均衡和重試,0配置
預設重試引數:
重試引數配置
有需要則設定
# 對所有服務都有效
ribbon:
maxautoretries:1
# 對 item-service 單獨配置,對其他服務無效
item-service:
ribbon:
maxautoretries:
0
預設不啟用 hystrix,feign不推薦啟用hystrix(後面再分析)
如果有特殊需求要啟用hystrix,首先做基礎配置
1、新增 hystrix 的完整依賴
org.springframework.cloud<
/groupid>
spring-cloud-starter-netflix-hystrix<
/artifactid>
<
/dependency>
org.springframework.cloud<
/groupid>
spring-cloud-starter-netflix-hystrix-dashboard<
/artifactid>
<
/dependency>
2、新增@enablecircuitbreaker
3、yml配置feign.hystrix.enabled=true
# 啟動hystrix
# 啟動hystrix
feign:
hystrix:
enabled:
true
之前:加的是@hystrixcommand(fallbackmethod=「 . . . 」)
現在:在宣告式客戶端介面的註解中,指定乙個降級類
@feignclient
(name=
"item-service"
, fallback=降級類.
class
)public
inte***ce
itemfeignclient
降級類要作為宣告式客戶端介面的子類來定義
其實現類要用@component
來標註
熔斷會自動觸發:10秒20次請求,50%失敗,執行了降級**。
org.springframework.boot<
/groupid>
spring-boot-starter-actuator<
/artifactid>
<
/dependency>
# 暴露監控端點
宣告式HTTP客戶端 Feign
用feign重構之前的 之前的 1.不可讀 2 複雜的url難以維護 3.難以響應需求的變化,變化很沒有幸福感 4 程式設計體驗不統一 改造 org.springframework.cloud spring cloud starter openfeign 在啟動類上加上 enablefeigncli...
Feign客戶端的日誌
一 介紹 很多場景下,需要了解feign處理請求的具體要求,處理feign遠端呼叫介面的日誌列印,那麼如何滿足這種需求呢?feign對日誌的處理非常靈活,可為每個feign客戶端指定日誌記錄策略,每個feign客戶端都會建立乙個logger。預設情況下,logger的名稱是feigh介面的完整類名。...
客戶端負載均衡Feign之四 Feign配置
設定連線超時時間 ribbon.connecttimeout 500 設定讀取超時時間 ribbon.readtimeout 5000 對所有操作請求都進行重試 ribbon.oktoretryonalloperations true 切換例項的重試次數 ribbon.maxautoretriesn...