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:
ConnectTimeout:
MaxAutoRetries:
MaxAutoRetriesNextServer: