java - job - Programación de primavera: @ Scheduled vs Quartz
spring boot quartz (2)
Quartz es un orden de magnitud más complejo que el programador integrado de Spring, incluido el soporte para trabajos persistentes, transaccionales y distribuidos. Sin embargo, es un poco cerdo, incluso con el soporte API de Spring.
Si todo lo que necesita es ejecutar métodos en un bean cada X segundos, o en un cronograma cron, entonces @Scheduled
(o las diversas opciones en el esquema de configuración <task>
Spring) es probablemente suficiente
Estoy leyendo los documentos de Spring 3.0 con respecto a la programación. Me estoy inclinando hacia JobDetailBean de Spring para Quartz. Sin embargo, la anotación @Scheduled ha capturado mi ojo. Parece que esta es otra forma de programar tareas usando Spring Framework. Basado en los documentos, Spring proporciona tres formas de programación:
- @Programado
- Via Quartz
- A través del temporizador JDK
No tengo ningún interés en el JDK Timer. ¿Por qué debería elegir @Scheduled en Quartz? (Cuando menciono a Quartz me refiero al uso del envoltorio de frijoles Spring para Quartz).
Digamos que mi caso de uso es lo suficientemente complejo como para comunicarme a un servicio web de terceros para importar y exportar datos a intervalos específicos.
Tengo que @Scheduled
mi propia experiencia con respecto al uso de @Scheduled
versus Quartz
como la implementación de programación en una aplicación de Spring.
La programación de trabajos tenía los siguientes requisitos:
- Los usuarios finales deben tener la capacidad de guardar y programar (definir el tiempo de ejecución) sus propias tareas
- Los trabajos programados durante el tiempo de inactividad del servidor no deben omitirse de la cola de trabajos
Por lo tanto, debemos intentar utilizar la implementación de Quartz (versión 2.2.3) para permitir la persistencia de trabajos en una base de datos. Algunas conclusiones básicas son las siguientes:
- La integración con una aplicación Spring 4 MVC no es difícil usando el archivo quartz.properties.
- Tuvimos la capacidad de elegir una segunda base de datos para almacenar los trabajos de la base de datos principal.
- Los trabajos programados durante el tiempo de inactividad del servidor comienzan a funcionar siempre que aparezca el servidor.
- Como beneficio adicional, logramos mantener en la base de datos principal información útil (y más orientada al usuario) sobre trabajos programados definidos por el usuario utilizando
JobListener
personalizado yTriggerListener
. - Quartz es una biblioteca muy útil en aplicaciones con requisitos de programación más complejos.