有些書上說,配置當中的ConnectTimeout和ReadTimeout是當HTTP客戶使用HttpClient的時候生效的,參數會被設置到HttpClient中,但我在使用過程中,並不是只有HttpClient才會生效。
默認情況下ribbon超時時間為1秒,我們模擬壹個2秒的業務讓ribbon超時。
當MaxAutoRetries大於0時,調用也沒有發生變化。
至此說明實驗壹中重試未起作用。
突然有壹個想法,網關重試機制會不會和ribbon底層使用的http有關呢,默認情況下ribbon使用的是httpclient,那麽我如果換成使用okhttp呢,於是,我把ribbon底層換成了okhttp又重復了壹遍實驗壹
ribbon.MaxAutoRetries: 1
通過打印異常堆棧,可以發現其中的端倪
異常已經清晰的告訴我們了原因:
Number of retries on next server exceeded max 1 retries ,就是重試機器的次數已經答到了設置的上限,因為我們MaxAutoRetriesNextServer設置的是1,意思就是我們重試壹臺。因此我們吧
ribbon.MaxAutoRetries: 2
zuul使用httpClient並支持重試
zuul網關重試就先寫到這,主要是記錄了壹下我自己的使用當中遇到的情況。歡迎拍磚。