這篇文章主要講解了“Spring 使用Spring Retry引入重試機(jī)制”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(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是一個(gè)獨(dú)立的包了(早期是Spring Batch的一部分),下面是使用Spring Retry框架進(jìn)行重試的幾個(gè)重要步驟。
第一步:加入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(); }
在上面這個(gè)案例當(dāng)中的重試策略就是重試5次,每次延時(shí)3秒。詳細(xì)的使用文檔看這里,它的主要配置參數(shù)有下面這樣幾個(gè)。其中exclude、include、maxAttempts、value幾個(gè)屬性很容易理解,比較看不懂的是backoff屬性,它也是個(gè)注解,包含delay、maxDelay、multiplier、random四個(gè)屬性。
delay:如果不設(shè)置的話默認(rèn)是1秒
maxDelay:最大重試等待時(shí)間
multiplier:用于計(jì)算下一個(gè)延遲時(shí)間的乘數(shù)(大于0生效)
random:隨機(jī)重試等待時(shí)間(一般不用)
Spring Retry的優(yōu)點(diǎn)很明顯,第一,屬于Spring大生態(tài),使用起來不會(huì)太生硬;第二,只需要在需要重試的方法上加上注解并配置重試策略屬性就好,不需要太多侵入代碼。
但同時(shí)也存在兩個(gè)主要不足
第一,由于Spring Retry用到了Aspect增強(qiáng),所以就會(huì)有使用Aspect不可避免的坑——方法內(nèi)部調(diào)用,如果被 @Retryable 注解的方法的調(diào)用方和被調(diào)用方處于同一個(gè)類中,那么重試將會(huì)失效;
第二,Spring的重試機(jī)制只支持對(duì)異常進(jìn)行捕獲,而無法對(duì)返回值進(jìn)行校驗(yàn)判斷重試。如果想要更靈活的重試策略可以考慮使用Guava Retry,也是一個(gè)不錯(cuò)的選擇。
感謝各位的閱讀,以上就是“Spring 使用Spring Retry引入重試機(jī)制”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Spring 使用Spring Retry引入重試機(jī)制這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
分享標(biāo)題:Spring使用SpringRetry引入重試機(jī)制
標(biāo)題鏈接:http://jinyejixie.com/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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)