欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring retry 配置及使用教程

 更新時(shí)間:2024年01月19日 10:32:54   作者:雄雞三聲天下白  
這篇文章主要介紹了spring retry 配置及使用教程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

spring retry 配置及使用

接口或功能因外界異常導(dǎo)致失敗后進(jìn)行重推機(jī)制

依賴

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
    </parent>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.retry</groupId>
        <artifactId>spring-retry</artifactId>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId >
        <artifactId>aspectjweaver</artifactId >
        <version>1.6.11</version >
    </dependency>

開始使用

@EnableRetry 啟用注解

代碼示例

@SpringBootApplication
@EnableRetry
public class SpringTestApp {
    public static void main(String[] args) {
        SpringApplication.run(SpringTestApp.class,args);
    }
}

業(yè)務(wù)注解

@Retryable 業(yè)務(wù)方法注解
@Recover 回調(diào)方法注解

代碼示例

@Slf4j
@Service
public class IndexService {
    @Retryable(value = NullPointerException.class)
    public String request(){
        log.info("開始測(cè)試 {}",System.currentTimeMillis());
        String str = null;
        str.indexOf("a");
        return "null";
    }
    @Recover()
    public String callback(NullPointerException e){
        log.info("重試3次失敗");
        throw e;
    }
}

注意

兩個(gè)方法的返回值要一樣,否則是不起作用的

NullPointerException 必須要將異常類型當(dāng)作參數(shù)傳入

如果不這樣的話無法進(jìn)行回調(diào),當(dāng)然不配置 @Recever 也可以,那就不會(huì)有回調(diào)處理了

寫一個(gè)action 調(diào)用一下方法

@RestController
public class IndexAction {
    @Resource
    private IndexService indexService;
    @GetMapping("test1")
    public String test1(){
        try {
            indexService.request();
            return "ok";
        }catch (Exception e){
            return e.getClass().getName() + e.getMessage();
        }
    }
}

輸出結(jié)果

 : 開始測(cè)試 1704852025819
 : 開始測(cè)試 1704852026824
 : 開始測(cè)試 1704852027833
 : 重試3次失敗

以上最簡(jiǎn)單的使用方式就結(jié)束了,

如果不加任何配置默認(rèn)會(huì)調(diào)用三次,每次間隔1s

注解源碼

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Retryable {
    String interceptor() default "";
    Class<? extends Throwable>[] value() default {};指定異常類型
    Class<? extends Throwable>[] include() default {};多個(gè)異常類型
    Class<? extends Throwable>[] exclude() default {};多個(gè)異常類型
    String label() default "";
    boolean stateful() default false;
    int maxAttempts() default 3;最大重試次數(shù)
    String maxAttemptsExpression() default "";最大嘗試次數(shù) 賦值后會(huì)覆蓋 maxAttempts 可以使用SpEL表達(dá)式
    Backoff backoff() default @Backoff; 延遲時(shí)間
    String exceptionExpression() default "";
    String[] listeners() default {};
}

通過以上的方式就能簡(jiǎn)單的使用 retry了,只能對(duì)網(wǎng)絡(luò)失敗,或者對(duì)方接口異常進(jìn)行重推,如果是參數(shù)問題,或者對(duì)方系統(tǒng)問題一直沒有修復(fù)則不起作用

retry的介紹就到這里了,還有一些其他用法,可以自行查閱api或者找一些別的帖子,如果有需要可以留言,我再繼續(xù)把其他示例補(bǔ)充上

到此這篇關(guān)于spring retry 配置及使用的文章就介紹到這了,更多相關(guān)spring retry使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論