java - online - quartz cron tester
¿Cómo se ejecuta cada 25 segundos en el programador de Quartz? (7)
Estoy usando la API de programación de Quartz para Java. ¿Podrías ayudarme a correr cada 25 segundos usando cron-expression? Es solo un retraso. No tiene que comenzar siempre en el segundo 0. Por ejemplo, la secuencia es así: 0:00, 0:25, 0:50, 1:15, 1:40, 2:05, etc. hasta el minuto 5 cuando el la secuencia comienza de nuevo en el segundo 0. Gracias.
*/25 * * * * *
- [wiki] http://en.wikipedia.org/wiki/Cron
- [tutorial de cuarzo] http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson06.html
No creo que la expresión cron te permita hacer eso, pero puedes usar
SimpleScheduleBuilder.repeatSecondlyForever( 25 )
como 300 (5 minutos) es un múltiplo de 25, se repetirá automáticamente.
No puedes tener un horario como ese para el cuarzo.
Una cosa que podría hacer es programar un trabajo de envoltura para que se ejecute cada 5 segundos, y solo hacer cualquier trabajo cada quinta ejecución.
Si desea que un trabajo se desencadene a intervalos regulares, puede usar un Quartz SimpleTrigger
con un repeatInterval
especificado.
Con Quartz 2.1.5 esto ayudará:
CronTrigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.build();
La única forma de hacer esto con un disparador cron es tan complicado que es inútil; estás mucho mejor con SimpleTrigger de otras respuestas. Sin embargo, si tiene que ser cron, debe configurar cinco activadores cron diferentes:
0/25 0/5 * * * *
15/25 1/5 * * * *
5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *
El primer disparador se dispara a las 0:00:25, 0:00:50; luego, el segundo disparador dispara a las 0:01:15 y a las 0:01:40; el tercero a las 0:02:05, 0:02:30, 0:02:55; el cuarto a las 0:03:20, 0:03:45; y finalmente el quinto a las 0:04:10 y 0:04:35. El primer disparador vuelve a tomar el control a las 0:05:00, etc.
Esto solo funciona porque 25 segundos se dividen de manera uniforme en 5 minutos (que a su vez se divide en una hora). Si lo quisieras cada 23 segundos? ¡Olvídalo!
Puede programar el trabajo para que se ejecute constantemente, pero acelere la frecuencia usando Camel''s Throttler.
<route>
<from uri="jms:queue:TestQueue"/>
<!-- throttle 1 messages per 25 sec -->
<throttle timePeriodMillis="25000">
<constant>1</constant>
<to uri="bean:TestBean?method=testMethod"/>
</throttle>
</route>