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

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

springboot整合spring-retry的實現示例

瀏覽:66日期:2023-03-05 09:20:20
目錄1、背景2、解決方案2.1 pom文件2.2 applicat啟動類2.3 controller類2.4 service測試類(重點)2.5 項目啟動2.6 使用swagger進行驗證1、背景

本系統調用外圍系統接口(http+json),但是發現有時外圍系統服務不太穩定,有時候會出現返回一串xml或者gateway bad的信息,導致調用失敗,基于這一原因,采用基于springboot,整合spring-retry的重試機制到系統工程中,demo已經放到github上。

2、解決方案

簡要說明:demo工程基于springboot,為了方便驗證,采用swagger進行測試驗證。

2.1 pom文件

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version><relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.laowang</groupId> <artifactId>springretry</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springretry</name> <description>Demo project for Spring Boot</description> <properties><java.version>1.8</java.version> </properties> <dependencies><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!--retry--><dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></dependency><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId></dependency><!--swagger--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version></dependency> </dependencies> <build><plugins> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration> <excludes><exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></exclude> </excludes></configuration> </plugin></plugins> </build></project>

重點說明:aop的gav必須有,否則會跑不起來。

<!--retry--><dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></dependency><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId></dependency>2.2 applicat啟動類

package com.laowang.springretry;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.retry.annotation.EnableRetry;import springfox.documentation.swagger2.annotations.EnableSwagger2;@EnableRetry@EnableSwagger2@SpringBootApplicationpublic class SpringretryApplication { public static void main(String[] args) {SpringApplication.run(SpringretryApplication.class, args); }}

說明:兩個標簽而已

@EnableRetry@EnableSwagger22.3 controller類

/** * @description: TODO * @author Administrator * @date 2021/6/2 14:55 * @version 1.0 */package com.laowang.springretry.controller;import com.laowang.springretry.service.RetryService;import io.swagger.annotations.Api;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@Api('重試測試類')@RestControllerpublic class RetryController { @Autowired RetryService retryService; @GetMapping('/testRetry') public String testRetry(int code) throws Exception {int result = retryService.retryTest(code);return 'result:' + result; }}2.4 service測試類(重點)

/** * @description: TODO * @author Administrator * @date 2021/6/2 12:23 * @version 1.0 */package com.laowang.springretry.service;import org.springframework.retry.annotation.Backoff;import org.springframework.retry.annotation.Recover;import org.springframework.retry.annotation.Retryable;import org.springframework.stereotype.Service;import java.time.LocalTime;@Servicepublic class RetryServiceImpl implements RetryService { @Override @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000, multiplier = 1.5)) public int retryTest(int code) throws Exception {System.out.println('retryTest被調用,時間:' + LocalTime.now());if (code == 0) { throw new Exception('異常拋出!');}System.out.println('retryTest被調用,情況對頭了!');return 200; } @Recover public int recover(Exception e) {System.out.println('回調方法執行,可以記錄日志到數據庫!!!!');//記日志到數據庫 或者調用其余的方法return 400; }}

**說明:**三個標簽

@Retryable注解被注解的方法發生異常時會重試value:指定發生的異常進行重試include:和value一樣,默認空,當exclude也為空時,所有異常都重試exclude:指定異常不重試,默認空,當include也為空時,所有異常都重試maxAttemps:重試次數,默認3backoff:重試補償機制,默認沒有

@Backoff注解說明delay:指定延遲后重試multiplier:指定延遲的倍數,比如delay=2000,multiplier=1.5時,第二次重試與第一次執行間隔:2秒;第三次重試與第二次重試間隔:3秒;第四次重試與第三次重試間隔:4.5秒。。。

@Recover當重試到達指定次數時,被注解的方法將被回調,可以在該方法中進行日志處理。需要注意的是發生的異常和入參類型一致時才會回調

2.5 項目啟動

springboot整合spring-retry的實現示例

執行運行application,啟動成功,默認端口號:8080

springboot整合spring-retry的實現示例

2.6 使用swagger進行驗證

(1)swagger訪問地址:

http://localhost:8080/swagger-ui.html

(2)先驗證成功返回

springboot整合spring-retry的實現示例

先測試正常調用試試,code=1

springboot整合spring-retry的實現示例

調用返回:

springboot整合spring-retry的實現示例

(3)重試機制:code=0(重點)

為了更好的說明問題,參數配置增大一些:

@Retryable(value = Exception.class, maxAttempts = 5, backoff = @Backoff(delay = 2000, multiplier = 2))

執行效果

springboot整合spring-retry的實現示例

說明:

從執行效果看,總共執行5次,第二次跟第一次之間是2秒;第三次跟第二次之間是2*2=4秒;第四次與第三次之間是:2 乘以2乘以2=8秒,第五次與第四次之間是:2 乘以2乘以2乘以2=16秒,符合預期。

執行完成后,進入 @Recover標簽內容,可以進行日志記錄,以便后續定位問題。

github項目地址:https://github.com/ruanjianlaowang/springretry

到此這篇關于springboot整合spring-retry的實現示例的文章就介紹到這了,更多相關springboot整合spring-retry內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久久久久穴| 国产欧美一区二区三区在线看蜜臀 | 91成人在线精品| 一区二区三区欧美激情| 黄色精品免费| 久久综合九色综合97_久久久| 国产91精品一区二区麻豆亚洲| 777奇米四色成人影色区| 免费日本视频一区| 91国产成人在线| 日韩不卡在线观看日韩不卡视频| 亚洲欧美日韩精品在线| 亚洲一区二区三区自拍| 国产一区二区三区的电影| 亚洲精品视频在线看| 在线成人欧美| 亚洲天堂中文字幕| 激情91久久| ㊣最新国产の精品bt伙计久久| 欧美三级在线| 国产精品萝li| 亚洲精选91| 亚洲第一精品在线| 久久综合给合久久狠狠色| 日韩国产欧美视频| 91黄视频在线| 韩国v欧美v亚洲v日本v| 日韩区在线观看| 91麻豆国产福利精品| 国产欧美一区二区精品性| 伊人久久成人| 又紧又大又爽精品一区二区| 亚洲一区二区三区四区中文| 亚洲6080在线| 欧美天堂一区二区三区| 国产精品夜夜爽| 欧美成人女星排行榜| 欧美一区1区三区3区公司| 亚洲素人一区二区| 影音先锋久久资源网| 亚洲色图一区二区三区| 蘑菇福利视频一区播放| 日韩精品高清不卡| 在线成人小视频| 不卡的av在线播放| 日本一区二区综合亚洲| 亚洲图片在线| 亚洲国产你懂的| 欧美亚州韩日在线看免费版国语版| 国产在线精品一区二区三区不卡| 日韩欧美一级精品久久| 99精品国产一区二区三区不卡| 国产精品嫩草久久久久| 亚洲一区激情| 韩国女主播一区| 国产色产综合色产在线视频| 亚洲经典视频在线观看| 日韩在线观看一区二区| 91精品啪在线观看国产60岁| av不卡一区二区三区| 亚洲欧洲综合另类| 欧美在线观看一区| 成人av电影在线观看| 国产精品美女一区二区| 久久99伊人| 国产91精品入口| 中文字幕乱码亚洲精品一区 | 麻豆91在线观看| 久久综合九色综合欧美98| 亚洲欧洲久久| 看片的网站亚洲| 国产亚洲精品aa午夜观看| 国产精品视频久久一区| 国产一区二区中文字幕| 国产精品美女久久久久aⅴ| 蜜桃久久精品乱码一区二区| 国产不卡免费视频| 亚洲人精品午夜| 欧美在线综合视频| 91视频免费播放| 亚洲成a人片综合在线| 日韩午夜在线影院| 亚洲国产精品日韩| 精品一区中文字幕| 中文字幕国产一区| 狂野欧美性猛交xxxx巴西| 成人黄色大片在线观看| 一区二区三区四区精品在线视频| 欧美日韩午夜在线视频| 欧美日韩1080p| 美洲天堂一区二卡三卡四卡视频 | 欧美成人综合网站| 日韩一级免费| 豆国产96在线|亚洲| 一区二区三区中文字幕在线观看| 欧美三级日韩在线| 欧美日韩三区| 精彩视频一区二区| 亚洲欧美在线另类| 欧美精品欧美精品系列| 亚洲人人精品| 成人激情综合网站| 无码av中文一区二区三区桃花岛| 欧美va亚洲va| 色婷婷激情综合| 欧美日韩国产综合网| 久久精品国产免费看久久精品| 亚洲国产精品99久久久久久久久| 在线视频中文字幕一区二区| 国产精品国色综合久久| 国产在线视视频有精品| 一区二区欧美在线观看| 久久久久久久久久久久久女国产乱| 美女尤物久久精品| 欧美精品亚洲| 国产伦精品一区二区三区在线观看| 亚洲国产精品ⅴa在线观看| 欧美日韩国产三级| 国产日韩欧美二区| 色综合天天视频在线观看| 激情五月婷婷综合网| 亚洲欧美国产三级| 日韩一区二区免费高清| 一本色道a无线码一区v| 欧美日韩专区| 国产精品一区久久久久| 亚洲成人一区在线| 国产精品少妇自拍| 精品久久久久一区| 欧美日韩国产综合一区二区| 亚洲一区二区三区精品视频| 欧美高清视频一区| 国产成人午夜精品5599| 日本一区中文字幕 | 国产成人精品亚洲777人妖 | 亚洲综合色噜噜狠狠| 国产亚洲精品福利| 欧美成人一区二区三区片免费| 色婷婷综合五月| 日韩天天综合| av中文字幕亚洲| 国产综合久久久久影院| 午夜精品一区在线观看| 亚洲人成网站影音先锋播放| 久久婷婷一区二区三区| 欧美人狂配大交3d怪物一区| 久久激情综合| 夜久久久久久| 国产精品大片| av成人免费在线| 国产风韵犹存在线视精品| 老司机免费视频一区二区三区| 亚洲一区中文在线| 亚洲日本乱码在线观看| 欧美韩国日本综合| 久久婷婷色综合| 日韩免费视频一区二区| 欧美人xxxx| 欧美亚洲丝袜传媒另类| 久久综合九色综合网站| 一区二区三区精品视频在线观看| 欧美日韩一区二区三区在线观看免| 大桥未久av一区二区三区中文| 紧缚捆绑精品一区二区| 香蕉久久夜色精品国产使用方法| 亚洲蜜桃精久久久久久久| 欧美国产精品v| 久久久久久久综合| 欧美精品一区二区在线观看| 欧美一区二区视频在线观看2020| 欧美日韩一区不卡| 欧美日韩国产综合久久| 欧美日韩午夜在线| 欧美日韩国产免费一区二区| 精品视频一区三区九区| 欧美午夜精品一区二区蜜桃| 精品视频在线免费观看| 欧美色成人综合| 欧美做爰猛烈大尺度电影无法无天| 久久资源在线| 欧美亚洲国产一卡| 欧美乱妇15p| 6080日韩午夜伦伦午夜伦| 91精品在线麻豆| 精品人在线二区三区| www久久精品| 国产亚洲短视频| 国产精品乱人伦中文| 中文字幕在线不卡国产视频| 亚洲色图视频免费播放| 夜夜夜精品看看| 亚洲综合免费观看高清完整版| 亚洲一区日韩精品中文字幕| 亚洲成人黄色影院| 爽好久久久欧美精品| 麻豆精品一区二区av白丝在线 | 日韩香蕉视频| 久久久久久久久一区二区| 欧美系列在线观看| 欧美一区二区成人|