spring的重试策略、发生异常会自动重新调用
测试类以及测试代码、复制即可
package com.cms.util; import javax.swing.plaf.synth.SynthSpinnerUI; import org.springframework.retry.RecoveryCallback; import org.springframework.retry.RetryCallback; import org.springframework.retry.RetryContext; import org.springframework.retry.backoff.ExponentialBackOffPolicy; import org.springframework.retry.policy.SimpleRetryPolicy; import org.springframework.retry.support.RetryTemplate; public class TestUtils { public static void main(String[] args) throws Exception { new TestUtils().sendMsg("", null, null); } public void sendMsg(String msg,String phone,String[] arr) throws Exception{ RetryTemplate template = new RetryTemplate(); // 策略 SimpleRetryPolicy policy = new SimpleRetryPolicy(); policy.setMaxAttempts(20); template.setRetryPolicy(policy); ExponentialBackOffPolicy exponen = new ExponentialBackOffPolicy(); exponen.setInitialInterval(1000); exponen.setMultiplier(2); template.setBackOffPolicy(exponen); String result = template.execute( new RetryCallback<String, Exception>() { @Override public String doWithRetry(RetryContext arg0) throws Exception { try { if(1==1){ System.out.println(123); throw new Exception(); } } catch (Exception e) { // TODO Auto-generated catch block throw new Exception(); } return ""; } } , new RecoveryCallback<String>() { @Override public String recover(RetryContext context) { return "recovery callback"; } } ); } }
以下是maven依赖
<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> <version>1.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.5.4</version> </dependency>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步