2009-11-16 5 views
0

J'ai besoin d'aide. J'utilise Quartz Scheduling et j'ai configuré un CronTrigger pour fonctionner tous les soirs à 22h. J'utilise JDBCJobStore pour tirer parti du clustering.Comment appeler un CronTriggerBean stocké dans un JDBCJobStore?

Le travail s'exécute à 22h00 toutes les nuits, mais je veux être en mesure d'appeler le travail par programme pour le lancer à la volée si nécessaire, mais je veux toujours profiter de la mise en cluster (c'est-à-dire je ne veux pas plusieurs personnes être capable de faire le travail).

Existe-t-il un moyen de récupérer le CronJob du magasin et de l'exécuter tout en profitant de l'option de clustering? Par exemple, maintenant, le 1er serveur qui réveille le travail s'exécute, lorsque l'autre serveur du cluster se réveille, il ne s'exécute pas si le travail est déjà démarré.

Je suis capable de faire comme ça mais ça commence comme un travail séparé .... ce qui n'est pas ce que je veux.

scheduler = StdSchedulerFactory.getDefaultScheduler(); 
scheduler.start(); 
/Create the JobDetail 
JobDetail jobDetail = new JobDetail("cronTrigger", Scheduler.DEFAULT_GROUP, MyCronJob.class); 

// Create a trigger that fires once right away 
Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 0); 
trigger.setName("FireOnceNowTrigger"); 
scheduler.scheduleJob(jobDetail, trigger); 

Répondre

0

En supposant que vous connaissez le nom du travail que vous avez déjà stocké ("storedJob"), est-ce que cela fonctionne pour vous?

Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 0); 
trigger.setName("FireOnceNowTrigger"); 
trigger.setJobName("storedJob"); 
trigger.setJobGroup(Scheduler.DEFAULT_GROUP); 

scheduler.scheduleJob(trigger); 
Questions connexes