我有以下代码示例:
@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
注释以启用 @Retryable
注释处理。
与 @EnableScheduling
的安排相同。
除了
@EnableRetry
和@EnableScheduling
之外,还要确保你有spring-aspects(或spring-boot-starter-aop
)的依赖。
这对我不起作用。 有没有人能够找到在同一方法上使用 @Retryable 和 @Scheduled 的解决方案。 就我而言,仅在预定时间调用一次,并且万一失败,它不会重试。