web-dev-qa-db-fra.com

Expression Cron toutes les cinq minutes dans les n prochaines heures?

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.

15
Alex Pi

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);
6
Morfic

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.

12
Khurram

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 * * *

2
darrenmc