Wykonanie zaplanowanych metod z wyrazem cron z bazy danych

0

Pytanie

Próbuję zmienić wyrażenie cron określonej metody z wartością określoną w bazie danych. Zazwyczaj używam do tego wiosenne adnotacje.

na przykład:

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

Byłoby ok, gdyby po uruchomieniu mojej programy te wyrażenia cron więcej się nie zmieniły. Ale na początku musi odczytać wartość z bazy danych i używać go jako wyrażenia cron dla tej metody.

Ostatecznym celem byłoby to, aby u mnie było X pokoi zadań w bazie danych, z których każdy miał własne wyrażenia cron. Zadania będą mieć określony typ (typeAJob, typeBJob itp.). Każdy typ będzie własny planowany metodę.

może ktoś ma Idee, dziękuję :)

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

Najlepsza odpowiedź

0

Znalazłem rozwiązanie: Tworzenie ThreadPoolTaskScheduler czarownica, którą mogę wykorzystać w celu wykonania kontrolowanego klasy:

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

Używam PostConstruct aby pobrać konkretne cronExceptions z bazy danych i wykonać wszystkie zadania po uruchomieniu mojego programu.

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

Możesz znaleźć więcej informacji tutaj: https://www.baeldung.com/spring-task-scheduler

2021-11-23 12:53:57

W innych językach

Ta strona jest w innych językach

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