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

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

springboot整合spring-retry的實現示例

瀏覽:90日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕一区二区三区在线视频| 国产欧美自拍一区| 亚洲精品婷婷| 日韩精品免费一区二区三区| 欧美日韩亚洲一区二区三区在线| 久久久影院免费| 国产精品亚洲欧美| 日本中文字幕一区二区| 少妇久久久久| 久久天堂影院| 国产精品三上| 免费成人网www| 日韩啪啪电影网| 日产精品一区二区| 国产精品入口久久| 奇米色欧美一区二区三区| 亚洲一区欧美二区| 亚洲福利一区| 久久精品免费一区二区三区| 水蜜桃精品av一区二区| 免费看久久久| 国产精品一区毛片| 日韩精品免费视频人成| 丝袜亚洲精品中文字幕一区| 欧美成人久久| 亚洲成av在线| 一区二区三区四区日本视频| 国产一区二区三区91| 久久精品一本| 国产精品蜜月aⅴ在线| 国产精品网址| 日韩精品一区第一页| 欧美成人aaa| 亚洲五月综合| 免费人成网站在线观看欧美高清| 97久久超碰| 亚洲天堂久久| 美女精品一区| 欧美日本一区| 国产伦乱精品| 亚洲一卡久久| 伊人精品视频| 国产成人精品亚洲日本在线观看| 日韩福利一区| 精品视频网站| 欧美网站在线| 青青青免费在线视频| 国产色99精品9i| 卡一卡二国产精品| 日本成人一区二区| 国产精品一区二区美女视频免费看 | 日韩av影院| 国产情侣久久| 久久av一区| 日韩欧乱色一区二区三区在线| 伊人成人网在线看| 国产精品试看| 日本中文字幕一区二区| 免播放器亚洲一区| 国产精品久久久久久久久久妞妞| 免费人成精品欧美精品| 国产精品亚洲成在人线| 日韩国产一二三区| 久久亚洲不卡| 日韩电影免费网址| 国产粉嫩在线观看| 日韩欧美自拍| 国产精品igao视频网网址不卡日韩| 欧美交a欧美精品喷水| 亚洲精品日本| 久久久久国产| 国产麻豆久久| 久久精品av| 亚洲在线免费| 亚洲深夜av| 国产精品任我爽爆在线播放| 国产精品115| 欧美成a人免费观看久久| 98精品久久久久久久| 爽好久久久欧美精品| 91成人精品| 欧美天堂一区| 欧美国产免费| 欧美午夜网站| 欧美日韩1区| 亚洲国产一区二区三区在线播放 | 一区视频在线| 国产精品高清一区二区| 国产精品中文字幕亚洲欧美| 亚洲成人av观看| 亚洲午夜在线| 欧美国产另类| 美女久久久久久| 亚洲在线一区| 精品国产网站| 国产一区二区三区不卡视频网站 | 久久久久久久久99精品大| 九九精品调教| 婷婷综合网站| 亚洲毛片视频| 欧美日韩中文一区二区| 婷婷激情图片久久| 久久久久久久欧美精品| 黄色日韩在线| 亚洲三级国产| av一区在线| 一区二区视频欧美| 国产二区精品| 一区二区三区四区在线观看国产日韩| 久久午夜影视| 国产精品18| 在线一区电影| 婷婷综合电影| 欧美日韩国产高清电影| 日韩av中文字幕一区二区三区| 国产精品天天看天天狠| 亚洲免费福利一区| 欧美激情网址| 亚州精品视频| 成人在线丰满少妇av| 国产精品一区二区精品| 亚洲综合电影| 精品久久不卡| 久热re这里精品视频在线6| 亚洲涩涩在线| 中文字幕一区日韩精品| 日本中文字幕一区二区| 合欧美一区二区三区| 欧美日韩亚洲一区三区| 国产日韩综合| 美女高潮久久久| 国产欧美日韩精品一区二区免费| 国产不卡av一区二区| 国产一区 二区| 另类中文字幕国产精品| 日韩av片子| 人人精品人人爱| 精品丝袜在线| 中文日韩欧美| 国产欧美日韩影院| 亚洲综合图色| 久久久精品日韩| 蜜桃成人精品| 日韩一区二区三区精品视频第3页| 另类专区亚洲| 日欧美一区二区| 蜜桃av一区二区在线观看| 精品视频一区二区三区四区五区 | 精品欧美日韩精品| 国产美女高潮在线观看| 天堂va在线高清一区| 欧美综合社区国产| 亚洲激情黄色| 日韩欧美中文在线观看| 欧美日韩亚洲在线观看| 福利在线免费视频| 日韩高清不卡在线| 精品久久精品| 91亚洲精品在看在线观看高清| 国产精品成人一区二区网站软件| 国产一级久久| 久久国产日韩欧美精品| 欧美日韩国产一区精品一区| 日本大胆欧美人术艺术动态| 欧美日韩视频免费看| 偷拍亚洲精品| 色婷婷精品视频| 欧美黄色一区| 日韩精品电影| 国产麻豆一区| 99在线|亚洲一区二区| 日本aⅴ亚洲精品中文乱码| 91成人精品| 黄毛片在线观看| 国产精品大片| 日韩欧乱色一区二区三区在线| 精品国产欧美| 欧美激情在线精品一区二区三区| 中文字幕成人| 亚洲欧美日韩国产| 欧美aⅴ一区二区三区视频| 亚洲资源网站| 国产免费成人| 激情久久中文字幕| 久久不射网站| 伊人久久视频| 成人午夜国产| 亚洲精品**中文毛片| 免费精品一区| 欧美日韩一区二区三区四区在线观看 | 日本aⅴ亚洲精品中文乱码| 在线一区视频| 国产一区不卡| 日韩中文字幕一区二区高清99| 国产亚洲高清视频| 伊人成人网在线看| 肉色欧美久久久久久久免费看 | 亚洲午夜91| 日韩欧美中文| 久久影院一区|