如何在 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
)的依赖性。
我有以下代码示例:
@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
)的依赖性。