一.Spring Cloud各元件重試
Spring Cloud各元件的重試配置。需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼 一零三八七七四六二六
早期,Spring Cloud的重試機制是比較混亂的-各個元件都有自己的重試機制,例如Ribbon、Feign、Zuul。官方也意識到了這個問題,並對重試相關邏輯進行了改造與簡化。
在Spring Cloud Edgware中,配置重試是非常簡單的。
重試步驟
1.重試依賴spring-retry,因此引入重試依賴
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
複製程式碼
2.配置重試
<client>
ribbon:
# 同一例項最大重試次數,不包括首次呼叫
MaxAutoRetries: 1
# 重試其他例項的最大重試次數,不包括首次所選的server
MaxAutoRetriesNextServer: 2
# 是否所有操作都進行重試
OkToRetryOnAllOperations: false
複製程式碼
其中是Ribbon Client名稱,表示對指定名稱的Ribbon Client進行重試。如果省略,則表示對所有Ribbon Client都進行重試。
3.對於Zuul,重試特性預設關閉。可使用zuul.retryable=true全域性開啟重試,也可使用zuul.routes..retryable=true開啟指定重試。
基於HTTP響應碼重試
Spring Cloud也支援基於HTTP響應碼進行重試,只需使用類似如下的配置即可:
<clientName>:
ribbon:
retryableStatusCodes: 404,502
複製程式碼
關閉重試
1.對於其它元件,可配置spring.cloud.loadbalancer.retry.enabled=false.
2.對於zuul,可配置zuul.retryable=false或zuul.routes..retryable=true.
注意點
Hystrix的超時時間必須大於超時的時間,否則,一旦Hystrix超時,就沒辦法繼續重試了。
一般來說,不建議將ribbon.OkToRetryOnAllOperations 設為true。因為一旦啟用該配置,則表示重試任何操作,包括POST請求,而由於快取了請求體,此時可能會影響伺服器的資源。 java B2B2C 多租戶電子商城系統