您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用spring retry方法調用失敗重試機制”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么用spring retry方法調用失敗重試機制”文章能幫助大家解決問題。
很多場景會用到重試的機制,比如:rpc服務調用失敗重試,文件上傳oss失敗重試,http接口調用失敗重試,支付回調失敗重試等等,一切因為網絡,非邏輯性錯誤等不確定因素引起的失敗都可以加上重試的機制,來增強系統的健壯性,博主也處理過文件上傳到第三方oss服務失敗增加重試的事例,在這之前不知道spring有個spring-retry項目,所以采用的是限制次數的遞歸調用的方式來解決的。
現在我們來看看spring boot項目中怎么使用spring-retry來處理是失敗重試的問題。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency>
ps:不要遺漏spring-boot-starter-aop包
/** * @Retryable注解參數說明 * maxAttempts 重試的次數 * value 指定異常重試 * exclude 排除某個異常不重試 * * @Backoff注解參數說明 * backoff 重試的間隔時間 */ @Retryable(maxAttempts=9,exclude = ArrayIndexOutOfBoundsException.class,value=Exception.class,backoff=@Backoff(delay = 1000)) public String getResult(String name){ System.out.println("嘗試調用第"+i+++"次"); name= name.split(",")[1111];//異常測試 if(i!=8){ name= name.split(",")[1111];//異常測試 } return name+":你好!"; }
@SpringBootApplication @EnableRetry public class BootRetryApplication { public static void main(String[] args) { SpringApplication.run(BootRetryApplication.class, args); } }
ps:別忘了@EnableRetry注解開啟重試
public static void main(String[] args) { ProxyFactory factory = new ProxyFactory(HelloService.class.getClassLoader()); factory.setInterfaces(HelloService.class); factory.setTarget(new HelloService() { @Override public String say() { System.err.println("hello"); if(1==1) throw new SecurityException(); return "a"; } }); HelloService service = (HelloService) factory.getProxy(); JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut(); pointcut.setPatterns(".*say.*"); RetryOperationsInterceptor interceptor = new RetryOperationsInterceptor(); ((Advised) service).addAdvisor(new DefaultPointcutAdvisor(pointcut, interceptor)); service.say(); }
關于“怎么用spring retry方法調用失敗重試機制”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。