feign中包含了hystrix以及ribbon,即feign在不匯入hystrix和ribbon的依賴下也能完成他們所能實現的功能,當然,如果想使用hystrix和ribbon自帶的註解以及配置,必須匯入依賴才可以。
org.springframework.cloud
spring-cloud-starter-feign
org.springframework.cloud
spring-cloud-starter-ribbon
org.springframework.cloud
spring-cloud-starter-hystrix
feign.hystrix.enabled = true
#feign中啟用hystrix
hystrix.command.default.execution.timeout.enabled = true
hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds = 2000
#hystrix超時時間設定(ms),超過設定時間觸發降級
serviceid.ribbon.readtimeout = 1000
serviceid.ribbon.connecttimeout = 1000
#設定服務呼叫的連線超時以及讀取超時(ms),超過設定時間或者丟擲異常觸發ribbon的重試,目前我們沒設定重試測試,缺省會重試其他負載均衡例項一次
springboot啟動類加上@enablefeignclients註解
@enablefeignclients
public static void main(string args) }
服務呼叫類通過@feignclient註解指定fallback或者fallbackfactory
@feignclient(name = "serviceid", configuration = feignhashystrixconfigure.class, fallbackfactory = servicefallbackfactory.class ,fallback = )
public inte***ce service
fallbackfactory可以捕捉feign客戶端丟擲的異常,這是fallback所無法辦到的
@component
public class servicefallbackfactory implements fallbackfactory};}
}
configuration可以為feignclient指定對應的配置,我們通過配置來設定feignclient是否支援hystrix,對於特定的feignclient我們不將它納入hystrix的管理,所以配置的hystrix超時時間對它不起作用
@configuration
public class feignhashystrixconfigure
}@configuration
public class feignnothystrixconfigure
}
feign與hystrix超時配置
採用feign與hystrix同時啟用的情況下,超時時間一般要根據實際伺服器數量等因素重新配置過,其中ribbon的超時時間 feign一般用ribbon的超時 一般不能大於hystrix的超時時間,否則ribbon的重試還沒開始就直接觸發了hystrix熔斷。ribbon的重試可以避免網路抖動 伺...
dubbo結合hystrix實現熔斷
要想實現上面描述的過程,那麼hystrix就必須要實現下面這幾樣功能 1 服務出現異常,超時,能夠自動走降級邏輯 2 當服務的失敗率達到閾值時,能夠自動進行熔斷 3 在服務熔斷期間,所有對於該服務的請求,全部走降級.4 當服務恢復時,後續請求能夠正常訪問該服務.配置開啟hystrix isopen ...
Feign的hystrix熔斷器不起作用
在開發spring cloud專案的時候,feign的熔斷器不起作用,指定了fallback不起作用。feignclient name produce fallback producecallback.class public inte ce producesevice component publ...