您好,登錄后才能下訂單哦!
前言
什么時候需要重處理?
在實際工作中,重處理是一個非常常見的場景,比如:發送消息失敗,調用遠程服務失敗,爭搶鎖失敗,等等,這些錯誤可能是因為網絡波動造成的,等待過后重處理就能成功.通常來說,會用try/catch,while循環之類的語法來進行重處理,但是這樣的做法缺乏統一性,并且不是很方便,要多寫很多代碼.然而spring-retry卻可以通過注解,在不入侵原有業務邏輯代碼的方式下,優雅的實現重處理功能.
思路
使用@Retryable和@Recover實現重處理,以及重處理失后的回調
實現
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=重試次數, backoff = @Backoff(value = 每次重試延遲毫秒數)) 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來開啟重試失敗后調用的方法(注意,需跟重處理方法在同一個類中)
@Recover public void recover(A異常 e) { // ... do something } @Recover public void recover(B異常 e) { // ... do something }
結束
演示了單spring boot的應用的,在后續的cloud場景中,如:zuul,等組件,都會涉及到重處理,會在后續的章節中講解
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。