springboot重試元件

2021-09-02 20:21:53 字數 1369 閱讀 4559

最近有乙個業務需要有重試機制,感覺應該寫乙個能夠重試的元件。

首先建立乙個註解

/**

* @author guoshaohua093

* @description 重試攔截

* @date 9:14 2018/12/8

*/@retention(retentionpolicy.runtime)

public @inte***ce istryagain

在常見乙個切入點

/**

*@author guoshaohua093

*@description 重試切點

*@date 14:07 2018/12/8

*/@component //宣告元件

@aspect

public class tryagainpointcut

}

因為我們希望每次重試都是乙個新的事務,所以我們需要高於事務去執行,並且我們項根據傳入的exception自行來判斷對什麼樣的異常進行重試(目前只支援放入一種哈,後續看心情開發中。。。。)。

/**

*@author guoshaohua093

*@description 重試攔截處理方法

*@date 14:09 2018/12/8

*/@component //宣告元件

@aspect

class retryagainexecutor implements ordered

public int getorder()

@around("@annotation(com.pingan.medical.config.interceptor.tryagain.istryagain)")

public object doconcurrentoperation(proceedingjoinpoint pjp) throws throwable catch(exception ex) else

}}while(numattempts < maxtimes);

throw retryexception;

}}

用的時候就很方便啦,寫了exception就會對指定的exception做攔截,不寫就會對所有的exception進行攔截。

@istryagain(times = 2,exception = customexception.class)

@transactional

public apiresult test() throw customexception(){

注意事項,如果用到事務,一定要讓***高於事務執行。

至此就結束了。

Spring Cloud各元件重試總結

spring cloud中的重試機制應該說是比較混亂的,不同的版本有一定區別,實現也不大一樣,好在spring cloud camden之後已經基本穩定下來,dalston中又進行了一些改進,詳情暫且不表。下面我們來詳細 筆者使用的版本是spring cloud dalston sr4,同樣適應於e...

Spring Cloud常用元件重試總結

ribbon的重試機制是基於spring retry,需要引用相關包 dependency groupid org.springframework.retry groupid artifactid spring retry artifactid dependency ribbon retryable...

spring boot分頁元件

configuration public class mybatisconfig 資料庫配置 資料庫連線配置資訊 spring.datasource.type com.alibaba.druid.pool.druiddatasource 初始化大小,最小,最大 spring.datasource.i...