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