2009-11-06 7 views
1

bonjour il y a quelque chose que j'ai réalisé avec le quartz en travaillant. Est-ce qu'un cron est réglé pour se réveiller toutes les 2min avec l'expression 0 0/2 * * *? . Lorsque vous exécutez le projet à 13:10:30, la première action se produit à 13:12:00 et la seconde à 13:14:00 et toutes les 2min 0 seconde pour le reste. Évidemment entre le démarrage du projet et la première occurrence de l'action il y a eu 1mn: 30s seulement.Mise au point de travail de quartz

Y a-t-il un moyen pour que la première occurrence respecte le 2min, peu importe en secondes le début du projet?

Répondre

3

emplois Cron sont configurés en quartz en utilisant la classe CronTrigger. L'alternative consiste à utiliser SimpleTrigger, que vous pouvez construire en utilisant des intervalles de retard fixes. SimpleTrigger possède plusieurs constructeurs, vous permettant de spécifier l'heure de début, l'heure de fin, le nombre de répétitions, l'intervalle de répétition, etc. Cela dit, je déconseille d'utiliser Quartz pour ce type de planification, et d'utiliser java.util.concurrent.Executors.newScheduledThreadPool(). C'est beaucoup plus facile que Quartz quand il s'agit de simples tâches répétitives.

1

Quartz peut utiliser cron pour la planification, qui est basée sur la date et l'heure, pas sur la durée. Cela signifie que l'expression cron que vous définissez est directement liée à l'heure actuelle sur la machine et non au démarrage de l'application.

Je ne suis pas au courant d'une configuration Quartz qui vous aidera à résoudre votre problème. Cependant, une solution est de créer votre propre Thread, qui a commencé lors du lancement de votre application et qui attend essentiellement 2 minutes avant d'appeler une méthode:

while (running) { 
    Thread.sleep(1000 * 120); 
    doStuff(); 
} 
+0

homme que vous venez de me donner une idée! merci mais je vais creuser un peu plus sur un moyen de le faire correctement. –

+0

Le quartz n'est pas basé sur cron. Il supporte la syntaxe, mais ne l'exige pas. – skaffman

+0

modifié pour refléter ce point. – romaintaz