2011-07-08 1 views
1

J'ai un programme qui replanifie les tâches pendant une heure. Parfois, il se déclenche au moment donné, et parfois il manque le temps de déclenchement.Le planificateur de quartz ne se déclenche pas à un moment donné

Il n'y a aucune exception ou erreur dans les journaux. Comment puis-je faire fonctionner le déclencheur au moment donné?

Toute aide est demandée. Mon code est le suivant:

StdSchedulerFactory sf = new StdSchedulerFactory(); 
Scheduler clusteredScheduler = sf.getScheduler(); 
Trigger tg = clusteredScheduler.getTrigger("myjob", "group1"); 
Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.HOUR, schedulerConstants.HOUR); 
Trigger tg = scheduler.getTrigger(
    schedulerConstants.START_PREPARE_SEARCH_CONSUMER_JOB_NAME, 
    schedulerConstants.JOB_GROUP_NAME); 
((CronTrigger) tg).setCronExpression(
    "0 " + cal.get(Calendar.MINUTE) + " " + cal.get(Calendar.HOUR_OF_DAY) + " * * ?"); 
clusteredScheduler.rescheduleJob("myjob", "group1", tg); 

Ceci est mon code complet. Parfois, le planificateur reste bloqué et ne répond pas. Il n'y a pas d'erreur ou d'exception dans les journaux. J'ai essayé d'augmenter le nombre de threads dans le pool de threads, et le problème persiste.

Répondre

2

Votre code est insuffisant pour pouvoir identifier votre problème. Vous n'affichez que la partie de code où vous mettez à jour un déclencheur existant (scheduler.getTrigger(...)). Vous avez peut-être oublié de replanifier le Job après la mise à jour du déclencheur: Scheduler#rescheduleJob. Veillez également à réutiliser le même déclencheur avec plusieurs tâches. Votre déclencheur est quotidien, à un moment précis (plus précisément - temps actuel pris, et probablement une heure ajoutée). Avez-vous essayé de faire fonctionner le système plus fréquemment et de voir ce qui se passe (à moins que vous n'ayez une meilleure façon d'automatiser ce test)? Juste au cas où - si vous expérimentez avec le décalage de temps sur votre dev. machine pour voir si elle exécute le travail avec les intervalles spécifiés, il peut effectivement ne pas fonctionner comme prévu.

+0

StdSchedulerFactory sf = nouveau StdSchedulerFactory(); Scheduler clusteredScheduler = sf.getScheduler(); Trigger tg = clusteredScheduler.getTrigger ("mon travail", "groupe1"); – padmini

Questions connexes