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
完畢