spring cloud的版本不斷演進,致使不少配置的配置方式不斷改變,有時某個配置在一個版本里面默認是true,後邊一升級默認成了false,這點讓人有點不爽。spring
言歸正傳spa
0、所使用版本code
spring cloud版本:Dalston.SR1blog
spring boot版本:1.5.4.RELEASE源碼
步驟以下:it
一、在配置文件中添加如下關鍵內容:io
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
注意:class
若是想指定某個路徑的重試的開啓和關閉,能夠配置zuul.routes.<route>.retryable的false和true配置
二、在pom中引入以下內容:route
<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency>
以支持:org.springframework.retry.support.RetryTemplate,進而初始化ribbon的重試策略,緣由以下圖源碼所示,注意其中的@ConditionalOnClass
三、重試好像(尷尬臉)不會跨zone
完畢