Feign宣告式客戶端介面

2021-10-25 08:52:42 字數 2799 閱讀 6888

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、新增@enablecircuitbreaker3、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...