詳解spring boot使用@Retryable來進行重處理
前言
什么時候需要重處理?
在實際工作中,重處理是一個非常常見的場景,比如:發(fā)送消息失敗,調(diào)用遠程服務(wù)失敗,爭搶鎖失敗,等等,這些錯誤可能是因為網(wǎng)絡(luò)波動造成的,等待過后重處理就能成功.通常來說,會用try/catch,while循環(huán)之類的語法來進行重處理,但是這樣的做法缺乏統(tǒng)一性,并且不是很方便,要多寫很多代碼.然而spring-retry卻可以通過注解,在不入侵原有業(yè)務(wù)邏輯代碼的方式下,優(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.應(yīng)用啟動類開啟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的應(yīng)用的,在后續(xù)的cloud場景中,如:zuul,等組件,都會涉及到重處理,會在后續(xù)的章節(jié)中講解
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud實現(xiàn)SSO 單點登錄的示例代碼
作為分布式項目,單點登錄是必不可少的,這篇文章主要介紹了SpringCloud實現(xiàn)SSO 單點登錄的示例代碼,非常具有實用價值,需要的朋友可以參考下2019-01-01
SpringBoot security安全認證登錄的實現(xiàn)方法
這篇文章主要介紹了SpringBoot security安全認證登錄的實現(xiàn)方法,也就是使用默認用戶和密碼登錄的操作方法,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-02-02
Java里的static在Kotlin里如何實現(xiàn)
這篇文章主要介紹了Java里的static在Kotlin里如何實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
Java應(yīng)用服務(wù)器之tomcat會話復(fù)制集群配置的示例詳解
這篇文章主要介紹了Java應(yīng)用服務(wù)器之tomcat會話復(fù)制集群配置的相關(guān)知識,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07

