feign結合hystrix實現熔斷 降級

2021-09-10 07:18:57 字數 1608 閱讀 7855

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...