博主首页

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>
复制代码

 

posted @   笑~笑  阅读(916)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示