Spring 从视图中启动计划任务

Spring Boot schedules task from view

我想在运行时从视图中添加和删除计划任务,这可能吗?也许有人有示例代码或关于它的好文章?

我遇到了和你一样的问题。也许,我可以借助redis或数据库提供一个不太好的解决方案。

在计划任务中,你可以从redis读取一个flag,然后你可以决定是否继续任务。例如

@Scheduled(cron = "....")
void myTask() {
    Boolean flag = readFlagFromRedis(); // you can write the flag into redis or database to control the task
    if (flag) {
    // continue your task
    } 
}

然后,您可以在运行时控制任务调度。

虽然我不认为这是一个漂亮的解决方案,但它可以满足您的要求

考虑这种方法。您可以根据您的观点和 运行 立即检查必要的任务,而不是添加和删除计划任务。这会更容易。检查 Quartz Scheduler,它的 CronExpression 有 isSatisfiedBy(Date date) 方法。

@Scheduled(cron = "5 * * * * *) // do not set seconds to zero, cause it may fit xx:yy:59
public void runTasks() {
    LocalTime now = LocalTime.now(); // or Date now = new Date();
    // check and run
}