欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解spring boot使用@Retryable來進行重處理

 更新時間:2017年06月02日 15:47:06   作者:wangkang80  
本篇文章主要介紹了詳解spring boot使用@Retryable來進行重處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

什么時候需要重處理?

在實際工作中,重處理是一個非常常見的場景,比如:發(fā)送消息失敗,調(diào)用遠程服務失敗,爭搶鎖失敗,等等,這些錯誤可能是因為網(wǎng)絡(luò)波動造成的,等待過后重處理就能成功.通常來說,會用try/catch,while循環(huán)之類的語法來進行重處理,但是這樣的做法缺乏統(tǒng)一性,并且不是很方便,要多寫很多代碼.然而spring-retry卻可以通過注解,在不入侵原有業(yè)務邏輯代碼的方式下,優(yōu)雅的實現(xiàn)重處理功能.

思路

使用@Retryable和@Recover實現(xiàn)重處理,以及重處理失后的回調(diào)

實現(xiàn)

1.pom引用

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

2.應用啟動類開啟retry

....其他注解

@EnableRetry
public class BaseApplication {
  .......
}

3.在指定方法上標記@Retryable來開啟重試

 @Retryable(value={A異常.class,B異常.class},
       maxAttempts=重試次數(shù),
       backoff = @Backoff(value = 每次重試延遲毫秒數(shù)))
 public Integer retry() {
  LOGGER.info("測試retry");
  final int a = 5;
  int num = new SecureRandom().nextInt();
  if (num % a == 0) {
   return num;
  }
  throw new RetryException("重試失敗");
 }

4.在指定方法上標記@Recover來開啟重試失敗后調(diào)用的方法(注意,需跟重處理方法在同一個類中)

 @Recover
 public void recover(A異常 e) {
  // ... do something
 }

 @Recover
 public void recover(B異常 e) {
  // ... do something
 }

結(jié)束

演示了單spring boot的應用的,在后續(xù)的cloud場景中,如:zuul,等組件,都會涉及到重處理,會在后續(xù)的章節(jié)中講解

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論