如何在 spring 中重试 @Scheduled 任务

How to retry @Scheduled task in spring

我有以下代码示例:

@Service
public class ScheduledTask {

    // Running each hour at 0 min. and 0 seconds
    @Scheduled(cron = "0 0 * * * *")
    @Retryable(value = Throwable.class, maxAttempts = 2, backoff = @Backoff(delay = 1000))
    public void execute() {
        log.info("Executing scheduled task!");
        throw new HttpTimeoutException("Let's see whether retry will rerun");
    }
}

我可以看到任务正在执行一次。但我没有看到任何重试。 @Scheduled@Retryable 之间是否存在任何不兼容性,或者我是否遗漏了什么?

或者是否有更好的方法来重试 @Scheduled 任务?

确保您的配置中有 @EnableRetry 注释 class 以启用 @Retryable 注释处理。 与 @EnableScheduling.

的调度相同

除了 @EnableRetry@EnableScheduling 之外,还要确保您具有 spring-方面(或 spring-boot-starter-aop)的依赖性。