Je sais que toutes les cinq minutes c'est:
0 0/5 * * * *
Mais comment puis-je limiter le nombre d'heures pour que cela se produise?
Exemple: toutes les cinq minutes pendant les 10 prochaines heures.
Je pense que devrait être en mesure de définir un déclencheur qui peut se répéter toutes les heures jusqu'à un certain moment:
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
...
Trigger myTrigger = newTrigger()
.withIdentity('myUniqueTriggerID")
.forJob(myJob)
.startAt(startDate)
.endAt(endDate)
.withSchedule(simpleSchedule().withIntervalInHours(1));
...
scheduler.scheduleJob(myJob, myTrigger);
Utilisez l'opérateur de plage pour spécifier les heures. Par exemple, pour exécuter le travail toutes les cinq minutes pendant 10 heures à partir de 2 heures du matin:
0 0/5 2-12 * * *
Voici un excellent tutoriel sur l'expression et les opérateurs Cron: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html
Edit: 03/10/2016: Mise à jour du lien.
Si vous pouvez accéder par programme au CronTrigger
qui exécute votre expression cron, vous pouvez appeler les méthodes setStartTime
et setEndTime
avec la plage de temps calculée.
Alternativement, vous pouvez construire l'expression cron à la volée et spécifier une plage horaire calculée.
Par exemple, si vous démarrez votre serveur à 9h, vous pouvez créer cette expression lors de l'exécution 0 0/5 9-19 * * *