日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

淺談spring的重試機(jī)制無效@Retryable@EnableRetry

瀏覽:282日期: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增強(qiáng),所有會有aspect的坑,就是方法內(nèi)部調(diào)用,會使aspect增強(qiáng)失效,那么retry當(dāng)然也會失效。

例如

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

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

補(bǔ)充知識:Springboot整合Spring Retry實(shí)現(xiàn)重試機(jī)制

在項(xiàng)目開發(fā)過程中,經(jīng)常會有這樣的情況:第一次執(zhí)行一個操作不成功,考慮到可能是網(wǎng)絡(luò)原因造成,就多執(zhí)行幾次操作,直到得到想要的結(jié)果為止,這就是重試機(jī)制。

Springboot可以通過整合Spring Retry框架實(shí)現(xiàn)重試。

下面講一下在之前新建的ibatis項(xiàng)目基礎(chǔ)上整合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和實(shí)現(xiàn)類RetryServiceImpl

重試接口:

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

接口實(shí)現(xiàn)類:

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('回調(diào)方法執(zhí)行!!!'); }}

@Retryable:標(biāo)記當(dāng)前方法會使用重試機(jī)制

value:重試的觸發(fā)機(jī)制,當(dāng)遇到Exception異常的時(shí)候,會觸發(fā)重試

maxAttempts:重試次數(shù)(包括第一次調(diào)用)

delay:重試的間隔時(shí)間

multiplier:delay時(shí)間的間隔倍數(shù)

maxDelay:重試次數(shù)之間的最大時(shí)間間隔,默認(rèn)為0,如果小于delay的設(shè)置,則默認(rèn)為30000L

@Recover:標(biāo)記方法為回調(diào)方法,傳參與@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項(xiàng)目進(jìn)行測試,在瀏覽器地址欄輸入:http://localhost:8080/retry/transfer

淺談spring的重試機(jī)制無效@Retryable@EnableRetry

可以看到,轉(zhuǎn)賬操作一共執(zhí)行了3次,最后執(zhí)行了回調(diào)方法。

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

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

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

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩中文字幕| 国产精品美女午夜爽爽| 亚洲资源av| 综合色一区二区| 欧美激情视频一区二区三区免费| 水蜜桃精品av一区二区| 婷婷综合网站| 久久精品72免费观看| 中文字幕成在线观看| 日韩午夜高潮| 国产精品对白久久久久粗| 韩国精品主播一区二区在线观看 | 91欧美极品| 国产美女高潮在线观看| 一区久久精品| 久久精品一本| 99在线观看免费视频精品观看| 国产欧美日韩精品一区二区免费| 日韩欧美中文| 日欧美一区二区| 国产在线|日韩| 欧美日本久久| 国产精品99一区二区| 91成人在线网站| 欧美成人精品| 欧美激情网址| 欧美日韩国产高清| 麻豆91精品视频| 丝瓜av网站精品一区二区| 国产精品国码视频| 99亚洲视频| 色在线视频观看| 清纯唯美亚洲综合一区| 久久中文字幕av| 欧美激情精品| 日韩精品一二三| 欧美一区久久久| 欧美天堂一区| 一本一道久久a久久精品蜜桃| 欧美极品中文字幕| 久久国产精品久久w女人spa| 国产精品22p| 亚洲视频二区| 激情综合自拍| 久久久久久久欧美精品| 日本成人中文字幕在线视频| 亚洲二区精品| 国产精久久久| 亚洲精品在线a| 色黄视频在线观看| 国产欧美一区二区三区米奇 | 亚洲精品日韩久久| 99精品视频在线| 精品一区不卡| 欧美日韩一视频区二区| 免费不卡在线观看| 欧美中文字幕一区二区| 国产一区二区三区视频在线| 日韩国产成人精品| 日韩在线一二三区| 91九色精品| 久久婷婷av| 高清一区二区三区av| 欧美精品三级在线| 中文字幕av一区二区三区人| 免费成人网www| 高清av不卡| 国产一区2区在线观看| 国产亚洲观看| 日韩av一区二区在线影视| 久久午夜精品一区二区| 蜜臀av免费一区二区三区| 日韩在线不卡| 色黄视频在线观看| 国产成人久久| 久久精品欧洲| 国产欧美88| 日本成人在线不卡视频| 亚洲一区二区日韩| 99成人在线| 激情91久久| 91国语精品自产拍| 91精品1区| 婷婷精品进入| 欧美日韩四区| 亚洲欧美网站| 伊人精品久久| 日韩在线网址| 青草av.久久免费一区| 深夜福利一区| 日韩高清电影免费| 日韩av电影一区| 日韩精彩视频在线观看| 日韩一区二区三免费高清在线观看| 美女久久一区| 亚洲人成精品久久久| 亚洲最新av| 日韩国产一区二| 国产亚洲人成a在线v网站| 国产欧美日韩一级| 麻豆91精品视频| 欧美国产偷国产精品三区| 国内自拍视频一区二区三区| 福利视频一区| 神马午夜在线视频| 在线日韩一区| 亚洲欧美日本日韩| 亚洲一二三区视频| 日本天堂一区| 久久精品网址| 91精品国产乱码久久久久久久| 美女毛片一区二区三区四区| 久久国产精品99国产| 无码日韩精品一区二区免费| 国产欧美午夜| 国内不卡的一区二区三区中文字幕| 成人国产精品久久| 久久亚洲精品中文字幕蜜潮电影| 激情欧美亚洲| 亚洲一区av| 国产精品欧美大片| 成人在线丰满少妇av| 99热精品久久| 狠狠干成人综合网| 日韩av中文在线观看| 精品一区二区三区中文字幕视频| 五月激情久久| 视频一区欧美日韩| 国产亚洲一卡2卡3卡4卡新区| 成人在线黄色| 日韩亚洲精品在线| 日本色综合中文字幕| 精品伊人久久| 黄色欧美日韩| 久久精品av麻豆的观看方式| 国产精品毛片久久| 亚洲欧美视频| 国产欧美一区二区三区精品观看| 国产精品久久久久9999高清| 91看片一区| 亚洲麻豆一区| 精品国产午夜肉伦伦影院| 伊人久久大香线蕉av不卡| 亚洲伊人精品酒店| 欧美激情aⅴ一区二区三区 | 青青国产91久久久久久| 精品色999| 最新亚洲一区| 国产精品xvideos88| 高清日韩中文字幕| 另类亚洲自拍| 欧美国产免费| 欧美特黄一级| 国产精品99精品一区二区三区∴| 99成人超碰| 国产欧美88| 免费久久精品| 国产精品天堂蜜av在线播放| 亚洲成人av观看| 青草国产精品久久久久久| av高清不卡| 欧美一区91| 欧美99久久| 久久99性xxx老妇胖精品| 秋霞国产精品| 国产欧美69| 悠悠资源网久久精品| 国产精品15p| 欧美综合二区| 女生影院久久| 国产乱码精品一区二区三区四区| 欧美日韩国产免费观看视频| 国产精品久久久久久久免费软件| 亚洲黄色在线| 成人欧美一区二区三区的电影| 亚洲三区欧美一区国产二区| 日韩欧美视频专区| 久久国产欧美日韩精品| 欧美日韩国产传媒| 国产精品亚洲成在人线| 夜夜嗨一区二区| 麻豆视频在线看| 国产精品自拍区| 伊人久久大香伊蕉在人线观看热v| 丁香六月综合| 国产伦理一区| 亚洲婷婷丁香| 精品中文一区| 欧美一级鲁丝片| 久久av中文| 日韩欧美2区| 亚洲在线免费| 亚洲小说欧美另类婷婷| 久久精品国产999大香线蕉 | 亚洲成a人片| 国产精品久久久久久妇女| 老色鬼久久亚洲一区二区| 日本不良网站在线观看| 国产精品啊啊啊| 欧美一区91|