私の目的は、グループごとに最大同時ジョブ数を指定することができるキューシステムを作成することです。グループAの場合、最大3つのジョブを同時に実行する必要があります。ジョブはcronスケジュールとSimpleTriggerで一度だけ実行することができるので、ジョブをスケジュールするときにキューをチェックすることができず、実行前または実行中にチェックする必要があります。私はjoblistenerを実装していますが、jobToBeExecuted()メソッドでの実行を阻止しようとしています。私はscheduler.interrupt()を試みましたが、ジョブがまだ開始していないときには動作しません。 scheduler.deletejob()とscheduler.unschedule()は実行を停止しませんでした。クォートでjobToBeExecutedのジョブ実行を防止する
アイデア?
public class JobQueueListener implements JobListener {
@Override
public void jobToBeExecuted(JobExecutionContext context) {
JobKey currentJobKey = context.getJobDetail().getKey();
JobDetail jobDetail = context.getJobDetail();
Scheduler scheduler = context.getScheduler();
if (shouldBePutInQueue(currentJobKey)) {
/// Prevent execution and put in queue here, but how?
}
}
@Override
public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
//Check queue and execute next in queue
}
}
ありがとう、ちょうど私が探しているもの! – Johan