Feign 的調用,總共分爲兩層,即 Ribbon 的調用和 Hystrix(熔斷處理) 的調用,高版本的 Hystrix 默認是關閉的。git
Ribbon 超時配置github
若是出現上圖的信息,說明是 Ribbon 超時了,須要在配置文件中進行控制處理:spring
### Ribbon 配置
ribbon:
# 鏈接超時
ConnectTimeout: 2000
# 響應超時
ReadTimeout: 5000
1
2
3
4
5
6
Hystrix 超時配置
開啓 Hystrix
### Feign 配置
feign:
# 開啓斷路器(熔斷器)
hystrix:
enabled: true
此時,若是超時,彙報一下錯誤:併發
默認 Hystrix 超時配置:ui
爲了不超時,咱們能夠根據業務狀況來配置本身的超時時間,此處配置熔斷時間爲:5000/毫秒。注意:建議 Ribbon 的超時時間不要大於 Hystrix 的超時時間.net
### Hystrix 配置
hystrix:
# 這樣將會自動配置一個 Hystrix 併發策略插件的 hook,這個 hook 會將 SecurityContext 從主線程傳輸到 Hystrix 的命令。
# 由於 Hystrix 不容許註冊多個 Hystrix 策略,因此能夠聲明 HystrixConcurrencyStrategy
# 爲一個 Spring bean 來實現擴展。Spring Cloud 會在 Spring 的上下文中查找你的實現,並將其包裝在本身的插件中。
shareSecurityContext: true
command:
default:
circuitBreaker:
# 當在配置時間窗口內達到此數量的失敗後,進行短路。默認20個
requestVolumeThreshold: 1
# 觸發短路的時間值,當該值設爲5000時,則當觸發 circuit break 後的5000毫秒內都會拒絕request
# 也就是5000毫秒後纔會關閉circuit。默認5000
sleepWindowInMilliseconds: 15000
# 強制打開熔斷器,若是打開這個開關,那麼拒絕全部request,默認false
forceOpen: false
# 強制關閉熔斷器 若是這個開關打開,circuit將一直關閉且忽略,默認false
forceClosed: false
execution:
isolation:
thread:
# 熔斷器超時時間,默認:1000/毫秒
timeoutInMilliseconds: 5000
源碼:https://github.com/SlowSlicing/demo-spring-cloud-finchley/tree/FeignClientTimeoutConfiguration
--------------------- 插件
https://blog.csdn.net/wo18237095579/article/details/83348496線程
https://blog.csdn.net/sinat_41620463/article/details/81533684blog