天天看點

feign+ribbon重試機制

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: