Zuul使用Ribbon配置自動重試

劍握在手發表於2018-01-22

spring cloud的版本不斷演進,導致很多配置的配置方式不斷改變,有時某個配置在一個版本里面預設是true,後邊一升級預設成了false,這點讓人有點不爽。

言歸正傳

 

0、所使用版本

spring cloud版本:Dalston.SR1

spring boot版本:1.5.4.RELEASE

 

步驟如下:

1、在配置檔案中新增以下關鍵內容:

spring:
  cloud:
    loadbalancer:
      retry:
#  據說ribbon重試預設已經開啟
        enabled: true

zuul:
#  重試必配,據說在Brixton.SR5版的spring cloud中該配置預設是true,結果在Dalston.SR1中看到的是false
  retryable: true

ribbon:
#  ribbon重試超時時間
  ConnectTimeout: 250
#  建立連線後的超時時間
  ReadTimeout: 1000
#  對所有操作請求都進行重試
  OkToRetryOnAllOperations: true
#  切換例項的重試次數
  MaxAutoRetriesNextServer: 2
#  對當前例項的重試次數
  MaxAutoRetries: 1
  eureka:
      enable: true

 

注意:

如果想指定某個路徑的重試的開啟和關閉,可以配置zuul.routes.<route>.retryable的false和true

 

2、在pom中引入如下內容:

        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>

以支援:org.springframework.retry.support.RetryTemplate,進而初始化ribbon的重試策略,原因如下圖原始碼所示,注意其中的@ConditionalOnClass

 

 

3、重試好像(尷尬臉)不會跨zone 

 

 完畢

相關文章