成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

淺談spring的重試機制無效@Retryable@EnableRetry

瀏覽:246日期:2023-08-13 14:11:26

spring-retry模塊支持方法和類、接口、枚舉級別的重試

方式很簡單,引入pom包

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>lastest</version></parent><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry --><dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> <version>1.1.2.RELEASE</version></dependency><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.6</version></dependency>

然后在@Configuration注解的類中添加@EnableRetry

最后在想要重試的方法上添加@Retryable(Exception.class)

由于retry用到了aspect增強,所有會有aspect的坑,就是方法內部調用,會使aspect增強失效,那么retry當然也會失效。

例如

public class demo { public void A() { B(); } @Retryable(Exception.class) public void B() { throw new RuntimeException('retry...'); }}

這種情況B()不會重試。

補充知識:Springboot整合Spring Retry實現重試機制

在項目開發過程中,經常會有這樣的情況:第一次執行一個操作不成功,考慮到可能是網絡原因造成,就多執行幾次操作,直到得到想要的結果為止,這就是重試機制。

Springboot可以通過整合Spring Retry框架實現重試。

下面講一下在之前新建的ibatis項目基礎上整合Spring Retry框架的步驟:

1、首先要在pom.xml配置中加入spring-retry的依賴:

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

2、在啟動類中加入重試注解@EnableRetry。

import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.retry.annotation.EnableRetry;@EnableRetry //重試注解@MapperScan('com.batis.mapper')@SpringBootApplicationpublic class BatisApplication { public static void main(String[] args) { SpringApplication.run(BatisApplication.class, args); }}

3、新建重試接口RetryService和實現類RetryServiceImpl

重試接口:

public interface RetryService { void retryTransferAccounts(int fromAccountId, int toAccountId, float money) throws Exception;}

接口實現類:

import com.batis.mapper.AccountMapper;import com.batis.model.Account;import com.batis.service.RetryService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.retry.annotation.Backoff;import org.springframework.retry.annotation.Recover;import org.springframework.retry.annotation.Retryable;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;@Servicepublic class RetryServiceImpl implements RetryService { @Autowired private AccountMapper accountMapper; @Transactional @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 3000, multiplier = 1, maxDelay = 10000)) @Override public void retryTransferAccounts(int fromAccountId, int toAccountId, float money) throws Exception { Account fromAccount = accountMapper.findOne(fromAccountId); fromAccount.setBalance(fromAccount.getBalance() - money); accountMapper.update(fromAccount); int a = 2 / 0; Account toAccount = accountMapper.findOne(toAccountId); toAccount.setBalance(toAccount.getBalance() + money); accountMapper.update(toAccount); throw new Exception(); } @Recover public void recover(Exception e) { System.out.println('回調方法執行?。。?); }}

@Retryable:標記當前方法會使用重試機制

value:重試的觸發機制,當遇到Exception異常的時候,會觸發重試

maxAttempts:重試次數(包括第一次調用)

delay:重試的間隔時間

multiplier:delay時間的間隔倍數

maxDelay:重試次數之間的最大時間間隔,默認為0,如果小于delay的設置,則默認為30000L

@Recover:標記方法為回調方法,傳參與@Retryable的value值需一致

4、新建重試控制器類RetryController

import com.batis.service.RetryService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping('/retry')public class RetryController { @Autowired private RetryService retryService; @RequestMapping(value = '/transfer', method = RequestMethod.GET) public String transferAccounts() { try { retryService.retryTransferAccounts(1, 2, 200); return 'ok'; } catch (Exception e) { return 'no'; } }}

5、啟動ibatis項目進行測試,在瀏覽器地址欄輸入:http://localhost:8080/retry/transfer

淺談spring的重試機制無效@Retryable@EnableRetry

可以看到,轉賬操作一共執行了3次,最后執行了回調方法。

至此Springboot整合Spring Retry的步驟已經完成,測試也非常成功!

有可以改進的地方希望諸位同學不要吝惜筆墨,加以指正,萬分感謝!

以上這篇淺談spring的重試機制無效@Retryable@EnableRetry就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲精品高清在线观看| 另类小说欧美激情| 久久精品欧美一区二区三区麻豆| 国产精品五区| 亚洲日本欧美| 日韩亚洲国产精品| 亚洲三级电影在线观看| 1024成人| 久热精品视频| 欧美三区在线视频| 欧美日韩午夜在线| 日韩视频一区二区| 精品国产一区二区三区不卡| 久久久美女毛片| 国产精品久久毛片a| 亚洲精品高清在线| 奇米色一区二区| 国产一区二区精品久久| 成人激情综合网站| 欧美日韩在线高清| 国产精品乱码| 老色鬼久久亚洲一区二区| 欧美在线免费视屏| 日韩欧美国产一区在线观看| 久久精品欧美日韩精品| 亚洲区小说区图片区qvod| 亚洲综合色视频| 日韩电影免费在线| 成人自拍视频在线观看| 欧美全黄视频| 一本大道久久a久久综合婷婷| 欧美日韩免费观看一区二区三区 | 香蕉免费一区二区三区在线观看| 国产伦精品一区二区三区视频黑人| 色哟哟国产精品免费观看| 欧美精品一二三区| 国产精品二区一区二区aⅴ污介绍| 夜夜揉揉日日人人青青一国产精品| 九九精品视频在线看| 91麻豆免费在线观看| 久久av最新网址| 日韩欧美的一区| 亚洲一区在线播放| 盗摄精品av一区二区三区| 亚洲国产一区二区三区a毛片| 久久先锋资源| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久久久天天天天| 欧美成人午夜电影| 亚洲一区二区三区三| 国产乱人伦精品一区二区在线观看 | 黑人精品欧美一区二区蜜桃| 欧美日韩综合精品| 欧美亚男人的天堂| 日韩一区有码在线| 国产99久久久精品| 老司机亚洲精品| 国产日产精品1区| 精品一区二区精品| 国产一在线精品一区在线观看| 欧美日韩高清影院| 欧美丰满少妇xxxbbb| 欧美高清在线精品一区| 韩国理伦片一区二区三区在线播放| 99久久精品国产导航| 久久精品女人| 中文字幕中文字幕在线一区| 国产精品一二三四五| 亚洲专区欧美专区| 中文字幕不卡在线观看| 国产盗摄女厕一区二区三区| 亚洲一区观看| 亚洲欧美怡红院| eeuss影院一区二区三区| 欧美日韩你懂得| 亚洲午夜国产一区99re久久| 欧美日韩三区四区| 久久综合一区二区| 黄色精品一二区| 色哟哟国产精品免费观看| 一区二区在线免费观看| 国产精品分类| 日韩三级精品电影久久久| 精品一区二区三区在线视频| 美女网站久久| 午夜视频在线观看一区| 国产一区二区三区免费不卡| 国产精品不卡在线| 欧美日韩国产成人精品| 精品日韩一区二区三区| 国产一区二区免费在线| 欧美午夜一区二区三区| 麻豆精品一区二区av白丝在线| 99综合在线| 一区二区在线观看免费视频播放 | 欧美一区二区女人| 国产一区在线视频| 欧美精品久久99久久在免费线 | 国产福利一区二区| 91精品国产美女浴室洗澡无遮挡| 久久精品国产999大香线蕉| 在线观看91视频| 久久91精品国产91久久小草| 欧美日韩精品综合在线| 狠狠色丁香婷婷综合| 555夜色666亚洲国产免| 狠狠久久亚洲欧美| 日韩一区二区视频| 成人国产精品免费观看视频| 亚洲精品在线网站| 韩国一区二区三区在线观看 | 成人的网站免费观看| 久久久久久久综合狠狠综合| 欧美区日韩区| 夜夜精品浪潮av一区二区三区| 国产精品区一区| 免费黄网站欧美| 日韩女优av电影| 午夜视频久久久| 亚洲欧美日韩国产成人精品影院 | 久久精品一二三| 亚洲第一在线综合在线| 亚洲一级不卡视频| 欧美亚男人的天堂| 亚洲综合精品四区| 热久久国产精品| 日韩欧美亚洲国产另类| 欧美在线三区| 亚洲小说欧美激情另类| 欧洲激情一区二区| av亚洲精华国产精华精华| 最新高清无码专区| 欧美亚洲禁片免费| 色综合天天天天做夜夜夜夜做| 亚洲精品网站在线观看| 欧美影视一区在线| 91性感美女视频| 亚洲一区av在线| 日韩欧美在线123| 亚洲午夜伦理| 久久电影网电视剧免费观看| 精品国产乱码久久久久久免费| 激情久久婷婷| 韩国女主播一区| 亚洲人精品午夜| 91精品国产综合久久久久久久| 欧美另类亚洲| 久久精品国产精品亚洲红杏| 国产欧美日韩在线看| 久久精品成人| 91麻豆高清视频| 青青草原综合久久大伊人精品优势| 欧美电影精品一区二区| 西西裸体人体做爰大胆久久久| 成人午夜在线播放| 亚洲成人精品影院| 久久久久久日产精品| 在线看国产一区二区| 国产精品v欧美精品v日本精品动漫 | 欧美国产日韩一二三区| 欧美日韩在线播放一区| 国内精品一区二区| 国产成人午夜视频| 亚洲一区二区三区国产| 26uuu色噜噜精品一区| 在线观看一区二区视频| 精品不卡一区| 99亚偷拍自图区亚洲| 九九九精品视频| 亚洲成人动漫av| 中文字幕制服丝袜一区二区三区| 91精品国产黑色紧身裤美女| 国产精品一国产精品k频道56| 91视频国产观看| 国产成人午夜片在线观看高清观看| 亚洲一二三四在线| 国产精品看片你懂得| 精品国内二区三区| 91精品在线免费观看| 美女主播一区| 亚洲欧美日韩精品久久久| 黑人一区二区三区四区五区| 成人免费精品视频| 国产精品羞羞答答xxdd| 日韩电影免费在线看| 亚洲福利视频导航| 亚洲综合另类小说| 亚洲欧美日韩电影| 亚洲嫩草精品久久| 中文字幕一区二区三区精华液| 久久色中文字幕| 欧美成人高清电影在线| 欧美一区永久视频免费观看| 欧美日韩一区国产| 欧美亚洲自拍偷拍| 欧美系列亚洲系列| 欧美电影在线免费观看| 欧美日韩精品一区二区| 欧美三电影在线| 欧洲av一区二区嗯嗯嗯啊|