Ejecutar métodos programados con expresiones Cron desde la base de datos.
Estoy intentando cambiar la expresión cron de un método específico con el valor definido en una base de datos. Normalmente uso las anotaciones de Spring para esto.
Por ejemplo:
@Scheduled(cron = "expresión cron desde la base de datos")
public void typeAJob(){
...
}
Estaría bien si después del inicio de mi programa estas expresiones cron no pudieran ser cambiadas más. Pero al inicio, debería leer el valor desde la base de datos y usarlo como expresión cron para este método.
El objetivo final sería que tengo X números de trabajos en la base de datos, cada uno teniendo su propia expresión cron. Los trabajos tendrán un tipo específico (typeAJob, typeBJob, etc.). Cada tipo tendrá su propio método programado.
Quizás alguien tenga una idea, ¡gracias! 🙂
davy.ai
Para cambiar la expresión cron de un método específico con un valor definido en una base de datos utilizando anotaciones de Spring, puede seguir estos pasos:
jobs
) con columnas para el tipo de trabajo (por ejemplo,type
), la expresión cron (por ejemplo,cron_expression
) y cualquier otra información relevante.Use el
JdbcTemplate
de Spring u otra biblioteca de acceso a bases de datos para consultar la base de datos y recuperar la expresión cron para el tipo de trabajo específico.Cree una clase de configuración con un método que devuelva un bean
TaskScheduler
configurado con la expresión cron dinámica. Por ejemplo:Esta clase de configuración recupera la expresión cron para
typeAJob
de la base de datos, crea un beanRunnable
paratypeAJob
y lo programa usando elScheduledTaskRegistrar
con la expresión cron dinámica.Repita el paso 3 para cada tipo de trabajo, utilizando la expresión cron adecuada de la base de datos.
Este enfoque le permite programar trabajos dinámicamente con diferentes expresiones cron basadas en valores en una base de datos. Tenga en cuenta que cambiar la expresión cron de un trabajo en ejecución puede causar un comportamiento inesperado, por lo que generalmente es una buena idea cambiar las expresiones cron entre las ejecuciones de su programa.