Executa Programată metode cu cron expresie din baza de Date

0

Problema

Eu sunt încercarea de a schimba cron exprimare, un mod specific cu valoarea definită într-o bază de Date. Sunt în mod normal, folosind Primăvară adnotări pentru acest lucru.

De Exemplu:

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

Ar fi ok dacă după începerea programului meu aceste cron expresii conta nu fi schimbat. Dar la început, ar trebui să citiți valoarea de la baza de Date și de a folosi ca cron expresie pentru această metodă.

Scopul final ar fi, că am X numărul de locuri de Muncă din baza de Date, cu fiecare având propria lui cron expresii. Locurile de muncă vor avea un anumit tip (typeAJob, typeBJob, etc.). Fiecare tip va avea propria metoda Programată.

poate cineva are o Idee, vă mulțumesc :)

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

Cel mai bun răspuns

0

Am găsit o Soluție: Crearea unui ThreadPoolTaskScheduler vrăjitoarea îl pot folosi pentru a executa o runnable clasa:

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

Eu folosesc PostConstruct pentru a încărca specifice cronExceptions din baza de date si executa toate locurile de muncă la începerea programului meu.

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

Puteți găsi mai multe informații aici: https://www.baeldung.com/spring-task-scheduler

2021-11-23 12:53:57

În alte limbi

Această pagină este în alte limbi

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