Как вызвать CronTriggerBean, хранящийся в JDBCJobStore? - PullRequest
0 голосов
/ 16 ноября 2009

Мне нужна помощь. Я использую Quartz Scheduling и настроил CronTrigger для работы каждую ночь в 22:00. Я использую JDBCJobStore, чтобы воспользоваться преимуществами кластеризации.

Работа выполняется в 22:00 каждую ночь, но я хочу иметь возможность программно вызывать ее, чтобы запускать ее на лету, если это необходимо, но я все еще хочу воспользоваться преимуществами кластеризации (т. Е. Я не хочу, чтобы несколько человек были в состоянии запустить работу).

Есть ли способ получить CronJob из магазина и запустить его, но при этом воспользоваться возможностью кластеризации? Например, теперь 1-й сервер, который запускает задание, запускается, когда другой сервер в кластере не активируется, если задание уже запущено.

Я могу сделать это, как это, но это начинается как отдельная работа .... это не то, что я хочу.

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

1 Ответ

0 голосов
/ 19 ноября 2009

Предполагая, что вы знаете название задания, которое вы уже сохранили ("сохраненное задание"), это работает для вас?

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

scheduler.scheduleJob(trigger);
...