springcloud 系列之 feign 的超時時間 和 zuul 的超時時間

今天在做熔斷測試的時候 , 關閉 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章