spring retry demo

main启动需要添加注解

@EnableRetry

  

service接口

public interface RetryService {
    void testRetry();
}

 

service实现

import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Recover;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;

@Service
public class RetryServiceImpl implements RetryService {
    @Override
    @Retryable(value = Exception.class, maxAttempts = 5, backoff = @Backoff(delay = 3000, multiplier = 2, maxDelay = 20000))
    public void testRetry() {
        System.out.println("in test retry: " + System.currentTimeMillis() / 1000);
        int a = 1 / 0;
        System.out.println("end in test retry");
    }

    @Recover
    public void recover(Exception e) {
        System.out.println("回调方法执行!!!");
    }
}

  
controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RetryController {
    @Autowired
    private RetryService retryService;

    @GetMapping("/test_retry")
    @ResponseBody
    public String testRetry() {
        try {
            retryService.testRetry();
            return "ok";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "error";
    }
}

 

main  

 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.retry.annotation.EnableRetry;


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

 

 

参考:https://blog.csdn.net/huanongying123/article/details/104417712

上一篇:python 重试—retry库的使用和自定义超时retry


下一篇:从0到1带你手撸一个请求重试组件,不信你学不会!