1. 程式人生 > >feign+ribbon重試機制

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