feign+ribbon重試機制
阿新 • • 發佈:2019-02-01
feign的重試與ribbon存在衝突,spring在某個版本後預設關閉了feign自身的重試機制.
引入ribbon包後,預設會自動開啟ribbon重試機制. 自己需要配置ribbon的超時時間,只有ribbon的超時時間小於hystrix的超時熔斷時間時,才會進行重試.
(ribbon預設會對當前服務例項重試一次,然後對下一個服務例項重試一次)
注意:
預設情況下,GET方式請求無論是連線異常還是讀取異常,都會進行重試;
非GET方式請求,只有連線異常時,才會進行重試.
不要啟用ribbon的重試所有操作,即OkToRetryOnAllOperations不要配置true,因為這又涉及到了冪等性問題
Http冪等性理解、FeignClient和Ribbon重試機制深入理解
請求次數為:
MaxAutoRetries + MaxAutoRetriesNextServer + (MaxAutoRetries * MaxAutoRetriesNextServer )
如果想固定重新請求的次數,需要同時配置MaxAutoRetriesNextServer=0或者MaxAutoRetries=0
關閉請求重試將MaxAutoRetriesNextServer和MaxAutoRetries都等於0
ribbon:
ReadTimeout: 3000
ConnectTimeout: 3000
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 0