J'utilise l'API Quartz Scheduling pour Java. Pourriez-vous m'aider à courir toutes les 25 secondes en utilisant cron-expression. C'est juste un délai. Par exemple, la séquence est la suivante: 0:00, 0:25, 0:50, 1:15, 1:40, 2:05, etc. la séquence recommence à la seconde 0 . Merci.
Je ne pense pas que l'expression cron vous permettra de le faire, mais vous pouvez utiliser
SimpleScheduleBuilder.repeatSecondlyForever( 25 )
comme 300 (5 minutes) est un multiple de 25, il se répète automatiquement.
Si vous souhaitez qu'un travail soit déclenché à un intervalle régulier, vous pouvez utiliser une variable Quartz SimpleTrigger
avec une variable repeatInterval
spécifiée.
Avec Quartz 2.1.5 cela aidera:
CronTrigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.build();
La seule façon de faire cela avec un déclencheur cron est tellement compliquée qu’elle est inutile; vous êtes bien mieux avec le SimpleTrigger d'autres réponses. Néanmoins, s'il doit être cron, vous devez configurer cinq déclencheurs différents:
0/25 0/5 * * * *
15/25 1/5 * * * *
5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *
Le premier déclencheur se déclenche à 0:00:25, 0:00:50; ensuite, le deuxième déclencheur se déclenche à 0:01:15 et 0:01:40; le troisième à 0:02:05, 0:02:30, 0:02:55; le quatrième à 0:03:20, 0:03:45; et enfin le cinquième à 0:04:10 et 0:04:35. Le premier déclencheur reprend alors à 0:05:00, etc.
Cela ne fonctionne que parce que 25 secondes se divisent uniformément en 5 minutes (ce qui équivaut à une heure). Si vous le vouliez toutes les23secondes? Oublie ça!
*/25 * * * * *
- [wiki] http://en.wikipedia.org/wiki/Cron
- [tutoriel quartz] http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson06.html
Vous pouvez planifier l'exécution du travail en permanence, mais limiter la fréquence à l'aide de Throttler de Camel.
<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>
Vous ne pouvez pas avoir un tel programme pour le quartz.
Une des choses que vous pouvez faire est de planifier l'exécution d'un travail d'encapsuleur toutes les 5 secondes et de n'effectuer qu'un travail toutes les cinq exécutions.