中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

asp access網站建設源代碼找一個免費域名的網站

asp access網站建設源代碼,找一個免費域名的網站,如何做網站活動封面,一站式免費建站平臺在日常開發(fā)過程中,難免會與第三方接口發(fā)生交互,例如:短信發(fā)送、遠程服務調用、爭搶鎖等場景,當正常調用發(fā)生異常時,例如:網絡抖動,這些間歇性的異常在一段時候之后會自行恢復,程序為…

在日常開發(fā)過程中,難免會與第三方接口發(fā)生交互,例如:短信發(fā)送、遠程服務調用、爭搶鎖等場景,當正常調用發(fā)生異常時,例如:網絡抖動,這些間歇性的異常在一段時候之后會自行恢復,程序為了更加健壯并且更不容易出現(xiàn)故障,需要重新觸發(fā)業(yè)務操作,以防止間歇性的異常對程序照成的影響。常用的重試策略,比如通過 while 循環(huán)手動重復調用或是通過 JDK/CGLib 動態(tài)代理的方式來進行重試。但是這種方法比較笨重,且對原有邏輯代碼的入侵性比較大。

1、引入spring-retry

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId>
</dependency>

這里我們還引入了 aop 的依賴,因為 spring-retry 的原理就是基于 aop 來實現(xiàn)的

2、開啟spring-retry

啟動類上增加注解 @EnableRetry

@EnableRetry
@SpringBootApplication
public class AsurplusApplication {public static void main(String[] args) {SpringApplication.run(AsurplusApplication.class, args);}
}

3、@Retryable

在需要重試的方法上增加注解 @Retryable,表示該方法需要重試

@Component
public class TestRetry {int a = 0;@Retryable(value = {RuntimeException.class}, maxAttempts = 5, backoff = @Backoff(delay = 1000, multiplier = 2))public String test() {a++;System.out.println(a + " - " + System.currentTimeMillis());if (a < 10) {throw new RuntimeException("未滿足條件");}return "執(zhí)行成功";}}

@Retryable 注解

  • value,可重試的異常類型。含義同include。默認為空(如果excludes也為空,則重試所有異常)
  • include:可重試的異常類型。默認為空(如果excludes也為空,則重試所有異常)
  • exclude:無需重試的異常類型。默認為空(如果includes也為空,則重試所有異常)
  • maxAttempts,最大重試次數(包括第一次失敗),默認為3次
  • backoff:重試等待策略,下面會在@Backoff中介紹
  • recover,表示重試次數到達最大重試次數后的回調方法

@Backoff 注解

  • delay,重試之間的等待時間(以毫秒為單位)
  • maxDelay,重試之間的最大等待時間(以毫秒為單位)
  • multiplier,指定延遲的倍數
  • delayExpression,重試之間的等待時間表達式
  • maxDelayExpression,重試之間的最大等待時間表達式
  • multiplierExpression,指定延遲的倍數表達式
  • random,隨機指定延遲時間

4、重試耗盡

當重試耗盡時,RetryOperations 可以將控制傳遞給另一個回調,即 RecoveryCallback。Spring-Retry 還提供了 @Recover 注解,用于 @Retryable 重試失敗后處理方法。若不需要重試失敗后的處理方法,則不寫回調方法,重試耗盡后拋出異常。

@Recover
public String recoverTest(RuntimeException e) {return "回調方法-" + e.getMessage();
}
  • 方法的返回值必須與 @Retryable 方法一致
  • 方法的第一個參數,必須是 Throwable 類型的,建議是與 @Retryable 配置的異常一致,其他的參數,需要哪個參數,寫進去就可以了(@Recover 方法中有的)
  • 該回調方法與重試方法寫在同一個實現(xiàn)類里面

若同一個實現(xiàn)類中有多個回調方法,我們需要使用 recover 屬性指定回調的方法名

@Component
public class TestRetry {int a = 0;@Retryable(recover = "recoverTest1", value = {RuntimeException.class}, maxAttempts = 5, backoff = @Backoff(delay = 1000, multiplier = 2))public String test() {a++;System.out.println(a + " - " + System.currentTimeMillis());if (a < 10) {throw new RuntimeException("未滿足條件");}return "執(zhí)行成功";}@Recoverpublic String recoverTest(RuntimeException e) {return "回調方法-" + e.getMessage();}@Recoverpublic String recoverTest1(RuntimeException e) {return "回調方法1-" + e.getMessage();}
}

指定了回調方法為 recoverTest1

5、注意事項

  • 由于是基于 AOP 實現(xiàn),所以不支持類里自調用方法
  • 如果重試失敗需要給 @Recover 注解的方法做后續(xù)處理,那這個重試的方法不能有返回值,只能是 void
  • 方法內不能使用 try catch,只能往外拋異常
  • @Recover 注解來開啟重試失敗后調用的方法(注意,需跟重處理方法在同一個類中),此注解注釋的方法參數一定要是 @Retryable 拋出的異常,否則無法識別,可以在該方法中進行日志處理。

如您在閱讀中發(fā)現(xiàn)不足,歡迎留言!!!

http://www.risenshineclean.com/news/5965.html

相關文章:

  • wordpress啟用兩個主題一鍵優(yōu)化是什么意思
  • 做游戲網站要多少錢站長申論
  • 中國建設銀行官方網站登錄seo招聘信息
  • 南通高端網站建設機構寧波seo怎么做推廣渠道
  • 做網站學什么語言關鍵詞網站推廣
  • word超鏈接網站怎么做seo課程培訓中心
  • 上海全部解封通知最新seo優(yōu)化關鍵詞是什么意思
  • 百度網站描述上海網站推廣系統(tǒng)
  • 現(xiàn)在全國疫情最新情況360手機優(yōu)化大師下載
  • 廣西網站建設費用寧波seo如何做推廣平臺
  • 哪些做批發(fā)的網站比較正規(guī)企業(yè)文化標語
  • 網站設計的汕頭公司網頁設計制作教程
  • php網站開發(fā)作業(yè)企業(yè)網址怎么申請
  • 路由器怎么做網站優(yōu)就業(yè)seo怎么樣
  • 在線做ppt模板下載網站有哪些推廣平臺下載
  • 哈爾濱企業(yè)做網站今日新聞頭條10條
  • 58同城佛山網站建設360點睛實效平臺推廣
  • 河北省建設廳網站老版信息流廣告公司排名
  • 如何熟悉網站項目的邏輯公司推廣咨詢
  • 網站怎么更改域名常州seo第一人
  • 信用網站建設工作總結凡科建站后屬于自己的網站嗎
  • 有空間域名服務器怎么做網站搜索引擎營銷的模式有哪些
  • 動漫制作專業(yè)認識武漢百度seo網站優(yōu)化
  • 二手書哪個網站做的好seo查詢 站長之家
  • 江蘇建站管理系統(tǒng)開發(fā)重慶搜索排名提升
  • win7主機做網站搜狗首頁排名優(yōu)化
  • wordpress批量刪除文章上海aso優(yōu)化公司
  • 昆明網站制作方案企業(yè)網絡營銷推廣案例
  • 廈門網站搜索引擎優(yōu)化網站排名優(yōu)化快速
  • wordpress 隱藏內容seo信息查詢