0

助けが必要です。Quartz Scheduling を使用しており、CronTrigger を毎晩午後 10 時に実行するように構成しました。クラスタリングを利用するために JDBCJobStore を使用しています。

ジョブは毎晩午後 10 時に実行されますが、必要に応じてプログラムでジョブを呼び出してその場で実行できるようにしたいのですが、クラスタリングを利用したい (つまり、複数の人が実行できるようにしたくない)仕事)。

クラスタリング オプションを利用しながら、ストアから CronJob を取得して実行する方法はありますか? たとえば、ジョブをウェイクアップする最初のサーバーが実行されます。クラスター内の他のサーバーがウェイクアップすると、ジョブが既に開始されている場合は実行されません。

私はこのようにこれを行うことができますが、それは別の仕事として始まります....これは私が望むものではありません.

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

1 に答える 1

0

すでに保存したジョブの名前 (「storedJob」) を知っていると仮定すると、これでうまくいきますか?

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

scheduler.scheduleJob(trigger);
于 2009-11-19T14:13:43.670 に答える