Spring使用SpringRetry引入重試機(jī)制

這篇文章主要講解了“Spring 使用Spring Retry引入重試機(jī)制”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Spring 使用Spring Retry引入重試機(jī)制”吧!

成都創(chuàng)新互聯(lián)主營南陵網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,南陵h5微信小程序開發(fā)搭建,南陵網(wǎng)站營銷推廣歡迎南陵等地區(qū)企業(yè)咨詢

如今,Spring Retry是一個獨(dú)立的包了(早期是Spring Batch的一部分),下面是使用Spring Retry框架進(jìn)行重試的幾個重要步驟。

第一步:加入Spring Retry依賴包。

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

第二步:在應(yīng)用中包含main()方法的類或者在包含@Configuration的類上加上@EnableRetry注解

第三步:在想要進(jìn)行重試的方法(可能發(fā)生異常)上加上@Retryable注解

@Retryable(maxAttempts=5,backoff = @Backoff(delay = 3000))
public void retrySomething() throws Exception{
    logger.info("printSomething{} is called");
    thrownew SQLException();
}

在上面這個案例當(dāng)中的重試策略就是重試5次,每次延時3秒。詳細(xì)的使用文檔看這里,它的主要配置參數(shù)有下面這樣幾個。其中exclude、include、maxAttempts、value幾個屬性很容易理解,比較看不懂的是backoff屬性,它也是個注解,包含delay、maxDelay、multiplier、random四個屬性。

  • delay:如果不設(shè)置的話默認(rèn)是1秒

  • maxDelay:最大重試等待時間

  • multiplier:用于計算下一個延遲時間的乘數(shù)(大于0生效)

  • random:隨機(jī)重試等待時間(一般不用)

Spring Retry的優(yōu)點(diǎn)很明顯,第一,屬于Spring大生態(tài),使用起來不會太生硬;第二,只需要在需要重試的方法上加上注解并配置重試策略屬性就好,不需要太多侵入代碼。

但同時也存在兩個主要不足

第一,由于Spring Retry用到了Aspect增強(qiáng),所以就會有使用Aspect不可避免的坑——方法內(nèi)部調(diào)用,如果被 @Retryable 注解的方法的調(diào)用方和被調(diào)用方處于同一個類中,那么重試將會失效;

第二,Spring的重試機(jī)制只支持對異常進(jìn)行捕獲,而無法對返回值進(jìn)行校驗判斷重試。如果想要更靈活的重試策略可以考慮使用Guava Retry,也是一個不錯的選擇。

感謝各位的閱讀,以上就是“Spring 使用Spring Retry引入重試機(jī)制”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Spring 使用Spring Retry引入重試機(jī)制這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

分享標(biāo)題:Spring使用SpringRetry引入重試機(jī)制
標(biāo)題鏈接:http://muchs.cn/article28/ipisjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、商城網(wǎng)站關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)