詳解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)文章
Java中比較器Comparator和Comparable的區(qū)別
這篇文章主要介紹了Java中比較器Comparator和Comparable的區(qū)別,我們在使用?Collections.sort()對鏈表進行排序時,常常需要根據(jù)不同情況自定義排序規(guī)則,今天我們來看看比較器之間的區(qū)別,需要的朋友可以參考下2023-08-08jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器
這篇文章主要介紹了jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實現(xiàn)方法
spring cloud用上了配置中心,就一個boostrap.yml,本文就來介紹一下Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實現(xiàn)方法,感興趣的可以了解一下2024-03-03Java實現(xiàn)將PPT轉(zhuǎn)為OFD過程詳解
本文將通過Java后端程序代碼展示如何實現(xiàn)將PPT幻燈片轉(zhuǎn)成OFD格式,文中的示例代碼講解詳細,對我們學習或工作有一定的幫助,需要的可以參考一下2022-01-01Java數(shù)據(jù)結(jié)構(gòu)最清晰圖解二叉樹前 中 后序遍歷
樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構(gòu)都可用樹形象表示2022-01-01springboot中PostMapping正常接收json參數(shù)后返回404問題
這篇文章主要介紹了springboot中PostMapping正常接收json參數(shù)后返回404問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05SpringBoot之ApplicationRunner解析(spring容器啟動完成執(zhí)行的類)
這篇文章主要介紹了SpringBoot之ApplicationRunner解析(spring容器啟動完成執(zhí)行的類),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05