今天在做熔斷測試的時候 , 關閉 auth 服務 發現 zuul 拋出了一個調用超時的錯誤 。
com.netflix.zuul.exception.ZuulException: Hystrix Readed time out
不應該啊 , 這個時候不應該是熔斷了麼 。返回我降級的數據 。(如下) 但是發現並沒有
{
"resultCode": "000000",
"resultMsg": "操作成功",
"data": [
{
"id": null,
"menuId": null,
"userId": null,
"menuCode": "權限模塊調用失敗降級返回"
}
]
}
不應該啊 。
原因 :
zuul 的默認超時時間是 1000ms feign 的默認超時時間是 1s 所以必定的 zuul 先超時 feign纔會進行降級操作
解決方法
zuul 設置超時時間 , 並且這個超時時間 要大於 feign的超時時間 。
# zuul 設置超時時間
# 設置zuul的超時時間 , 需要同時設置 ribbon 的 應爲zuul 默認是 由 ribbon 實現的
# 注意ribbon的超時時間要小於zuul超時時間 。
ribbon:
ReadTimeout: 10000
ConnectTimeout: 10000
feign 的超時時間設置
# 申明 服務降級
feign:
hystrix:
enabled: true
# 設置 feign 的超時時間 超過 5s 進行降級返回
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 5000
我看到有另一種設置方式的 feign 官網 也是這樣的(如下)但不知道爲什麼會沒有效果 , 希望有大神看到能解答一下 。自己也要多去找一下問題
feign:
client:
config:
default:
connectTimeout: 10000
readTimeout: 10000