spring boot / cloud (七) 使用@Retryable来进行重处理
生活随笔
收集整理的這篇文章主要介紹了
spring boot / cloud (七) 使用@Retryable来进行重处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
spring boot / cloud (七) 使用@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() {final int a = 5;int num = new SecureRandom().nextInt();if (num % a == 0) {return num;}throw new RetryException("重試失敗");}4.在指定方法上標記@Recover來開啟重試失敗后調(diào)用的方法(注意,需跟重處理方法在同一個類中)
@Recoverpublic void recover(A異常 e) {// ... do something}@Recoverpublic void recover(B異常 e) {// ... do something}代碼倉庫 (博客配套代碼)
udf-starter : 基礎(chǔ)項目,腳手架,框架
udf-sample : 集成樣例
結(jié)束
演示了單spring boot的應(yīng)用的,在后續(xù)的cloud場景中,如:zuul,等組件,都會涉及到重處理,會在后續(xù)的章節(jié)中講解
想獲得最快更新,請關(guān)注公眾號
轉(zhuǎn)載于:https://www.cnblogs.com/itkk/p/7448643.html
總結(jié)
以上是生活随笔為你收集整理的spring boot / cloud (七) 使用@Retryable来进行重处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单图形打印(需求分解)
- 下一篇: Sqring核心概念