Ejecución Programada métodos con cron expresión de la Base de datos

0

Pregunta

Estoy tratando de cambiar el cron expresión de un método específico con el valor definido en una Base de datos. Estoy usando normalmente la Primavera de anotaciones para esto.

Por Ejemplo:

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

Todo estaría bien si después del inicio de mi programa de estas expresiones cron recuento de no ser cambiado. Pero, en el inicio, se debe leer el valor de la Base de datos y utilizarla como expresión cron para este método.

El objetivo final sería, que tengo X cantidad de Puestos de trabajo en la Base de datos, cada una con sus propias expresiones cron. Los trabajos tendrán un tipo específico (typeAJob, typeBJob, etc.). Cada tipo tiene su propio Programada método.

tal vez alguien tiene una Idee, gracias :)

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

Mejor respuesta

0

He encontrado una Solución: La creación de un ThreadPoolTaskScheduler bruja que puede utilizar para ejecutar un ejecutable de la clase:

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

Yo uso PostConstruct para cargar el específico cronExceptions de la base de datos y ejecutar todos los trabajos en el inicio de mi programa.

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

Usted puede encontrar más información aquí: https://www.baeldung.com/spring-task-scheduler

2021-11-23 12:53:57

En otros idiomas

Esta página está en otros idiomas

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