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
}
}
Затем вы можете контролировать расписание задач во время выполнения.
Хотя я не думаю, что это красивое решение, оно может удовлетворить ваши требования