Red de conocimiento informático - Problemas con los teléfonos móviles - Los principios de sincronización dinámica de Quartz deben explicarse claramente. Se recomienda hablarlo personalmente.

Los principios de sincronización dinámica de Quartz deben explicarse claramente. Se recomienda hablarlo personalmente.

¿Qué es una tarea programada dinámica? La genera el cliente. El servidor solo sabe qué tarea realizar, pero el momento de la tarea es incierto (establecido por el cliente).

De esta manera, el archivo de configuración no se puede modificar y se agrega un activador para cada tarea programada personalizada. Incluso si el cliente puede modificar el archivo de configuración, el servicio web siempre debe reiniciarse. he estudiado la sincronización dinámica de Quartz, encontré lt; bean id="cronTrigger" class="org. Springframework.scheduling.quartz.CronTriggerBean" gt

lt; /gt ;

lt; cronTriggerBean" class="org.property name="cronExpression"gt

lt;valuegt;0/10 * * * ?lt;/valuegt;

p>

lt;/propertygt;

cronExpression es la clave. Si podemos establecer dinámicamente el valor de cronExpression, es decir, llamar al método de configuración de cronExpression en CronTriggerBean. , podemos resolver el problema.

① targetMethod: especifica que el método simpleJobTest() en ScheduleInfoAction debe ejecutarse regularmente

② Concurrencia: para el mismo JobDetail, cuando se especifican varios activadores, el primer trabajo será Muy puede completarse antes de que comience el segundo trabajo. Si especifica la concurrencia como falsa, no se ejecutarán varios trabajos simultáneamente y el segundo trabajo no comenzará antes de que se complete el primero.

③ cronExpression: 0/10 * * * * ? Indica ejecución cada 10 segundos, como se muestra en la tabla adjunta.

④ Activadores: se pueden colocar varios activadores en la lista agregando elementos de referencia adicionales.

Método simpleJobTest() en ScheduleInfoAction

Nota: este método no tiene parámetros. Si ScheduleInfoAction tiene dos métodos simpleJobTest() y simpleJobTest (argumento de cadena), Spring solo ejecutará simpleJobTest(). con parámetros.

public void simpleJobTest() {

log.warn("¡Oh, oh, el trabajo está programado!'" "' Éxito...")

; }

Establecer dinámicamente el método Quartz in Spring de cronTrigger 2

En los 2 anteriores, podemos ver que aunque el trabajo se puede reprogramar dinámicamente, todavía requiere que configuremos una cronExpression, si intentamos eliminar

lt;property name="cronExpression"gt;

lt;valuegt;0/10 * * * ?lt;/valuegt; p>lt;/propertygt;

Entonces se producirá un error cuando se inicie el contenedor (por ejemplo, Tomcat).

En la práctica, esperamos que Tomcat se inicie directamente para leer la base de datos, obtener la dbCronExpression correspondiente y luego ejecutar el trabajo con regularidad. No queremos configurar la cronExpression inicial. Observe el CronTriggerBean a continuación. y considere que cronExpression debe inicializarse. Si configura una clase InitializingCronTrigger para heredar CronTriggerBean y luego realiza algún trabajo de inicialización para leer la base de datos (configurando cronExpression) en esta clase, el problema se puede resolver.

"0 0 12 * * ?" 12 del mediodía todos los días Haga clic en el activador

"0 15 10 ?* "Active todos los días a las 10:15 a. m.

"0 15 10 * * ? "Se activa todos los días a las 10:15 a. m.

"0 15 10 * * ?*"Se activa a las 10:15 a. m. todos los días

"0 15 10 * * ?2005" Se activa a las 10:15 am todos los días en 2005

"0 * 14 * * ? Activar cada 1 minuto entre las 2 pm y las 2:59 pm todos los días

"0 0/5 14 * * ?" Cada 5 minutos entre las 2 pm y las 2:55 pm todos los días Activar una vez

"0 0/5 14, 18 * *?" Activar una vez cada 5 minutos entre las 2 pm y las 2:55 pm todos los días y cada 5 minutos entre las 6 p. m. y las 6:55 p. m. Se activa una vez cada minuto

"0 0-5 14 * * ?"Se activa una vez cada 1 minuto entre las 2 p. m. y las 2:05 p. m. todos los días

"0 10, 44 14 ? 3 MIE" Se activa los miércoles de cada marzo a las 2:10 y 2:44 pm

"0 15 10 ?* Se activa a las 10: 15 am de lunes a viernes

"0 15 10 15 * ?"Se activa a las 10:15 am del día 15 de cada mes

"0 15 10 L * ?"Se activa a las 10 :15 am del último día de cada mes

"0 15 10 ? * 6L" Se activa a las 10:15 am del último viernes de cada mes

"0 15 10 ? * 6L 2002-2005" Se activa a las 10:15 am del último viernes de cada mes desde 2002 a 2005

"0 15 10 ?* 6#3" Se activa a las 10:15 am del tercer viernes de cada mes

"0 15 10 ?