Spring Boot планирует задачу из вида

Я хочу добавить и удалить запланированные задачи во время выполнения из представлений, возможно ли это? Может быть, у кого-то есть пример кода или хорошая статья об этом?

2 ответа

Решение

Рассмотрим этот подход. Вместо добавления и удаления запланированных задач вы можете каждую минуту (или с другой точностью) проверять фактический момент на соответствие вашим представлениям и немедленно запускать необходимые задачи. Это будет проще Проверьте 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
}

Я встретил ту же проблему с вами. Может быть, я могу предоставить не очень хорошее решение с помощью Redis или базы данных.

В запланированной задаче вы можете прочитать флаг из Redis, а затем вы можете решить, продолжить ли задачу. Например

@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
    } 
}

Затем вы можете контролировать расписание задач во время выполнения.

Хотя я не думаю, что это красивое решение, оно может удовлетворить ваши требования

Другие вопросы по тегам