如何在spring中重试@Scheduled任务

问题描述 投票:0回答:3

我有以下代码示例:

@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
任务吗?

java spring spring-boot spring-scheduled spring-retry
3个回答
3
投票

确保您的配置类上有

@EnableRetry
注释以启用
@Retryable
注释处理。 与
@EnableScheduling
的安排相同。


3
投票

除了

@EnableRetry
@EnableScheduling
之外,还要确保你有spring-aspects(或
spring-boot-starter-aop
)的依赖。


0
投票

这对我不起作用。 有没有人能够找到在同一方法上使用 @Retryable 和 @Scheduled 的解决方案。 就我而言,仅在预定时间调用一次,并且万一失败,它不会重试。

© www.soinside.com 2019 - 2024. All rights reserved.