Executar Agendada métodos com o cron expressão de Banco de dados

0

Pergunta

Eu estou tentando mudar o cron expressão de um método específico com o valor definido em um Banco de dados. Eu estou utilizando normalmente a Primavera de anotações para isso.

Por Exemplo:

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

Seria ok se depois de começar o meu programa de estas expressões cron contagem de não ser mais alterado. Mas no início, ele deve ler o valor a partir do Banco de dados e usá-lo como expressão cron para este método.

O objetivo final seria, que eu tenho X números de postos de trabalho no Banco de dados, com cada um tendo o seu próprio cron expressões. Os trabalhos terão um tipo específico (typeAJob, typeBJob, etc.). Cada tipo tem seu próprio método Programado.

talvez alguém tenha uma Idee, obrigado :)

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

Melhor resposta

0

Eu encontrei uma Solução: A criação de um ThreadPoolTaskScheduler bruxa eu posso usar para executar um runnable classe:

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

Eu uso PostConstruct para carregar o específico cronExceptions do banco de dados e executar todos os trabalhos no início do meu programa.

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

Você pode encontrar mais informações aqui: https://www.baeldung.com/spring-task-scheduler

2021-11-23 12:53:57

Em outros idiomas

Esta página está em outros idiomas

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