Выполнение запланированных методов с выражением cron из базы данных

0

Вопрос

Я пытаюсь изменить выражение cron определенного метода со значением, определенным в базе данных. Обычно я использую для этого весенние аннотации.

например:

@Scheduled(cron = "cronExpression from Database")
public void typeAJob(){
...
}

Было бы нормально, если бы после запуска моей программы эти выражения cron больше не менялись. Но в начале он должен прочитать значение из базы данных и использовать его в качестве выражения cron для этого метода.

Конечная цель состояла бы в том, чтобы у меня было X номеров заданий в базе данных, каждое из которых имело бы свои собственные выражения cron. Задания будут иметь определенный тип (typeAJob, typeBJob и т.д.). У каждого типа будет свой собственный запланированный метод.

может быть, у кого-то есть Idee, спасибо :)

cron database java scheduled-tasks
2021-11-22 15:50:04
1

Лучший ответ

0

Я нашел решение: Создание ThreadPoolTaskScheduler ведьма, которую я могу использовать для выполнения управляемого класса:

    public ExportJobService exportScheduler(ThreadPoolTaskScheduler threadPoolTaskScheduler) {
        threadPoolTaskScheduler.setPoolSize(5);
        threadPoolTaskScheduler.setThreadNamePrefix("ExportJobScheduler");
        return new ExportJobService(threadPoolTaskScheduler);
    }

Я использую PostConstruct чтобы загрузить конкретные cronExceptions из базы данных и выполнить все задания при запуске моей программы.

 @PostConstruct
    public void runJobs() {
        repository.findAll()
                  .stream()
                  .map(this::buildJob)
                  .forEach(job -> {
                      var cronTrigger = new CronTrigger(job.getCronExpression());
                      taskScheduler.schedule(job, cronTrigger);
                  });
    }

Вы можете найти более подробную информацию здесь: https://www.baeldung.com/spring-task-scheduler

2021-11-23 12:53:57

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................