私の目的は、グループごとに同時実行ジョブの最大量を指定できるキュー システムを作成することです。つまり、グループ A では最大 3 つのジョブを同時に実行する必要があり、グループ B では最大 Y ジョブなどです。ジョブは両方で実行できます。 cron スケジュールで実行し、SimpleTrigger で 1 回だけ実行するため、ジョブをスケジュールするときにキューを確認できません。実行前または実行中に確認する必要があります。私はジョブリスナーを実装しており、jobToBeExecuted() メソッドでの実行を防止しようとしています。scheduler.interrupt() を試しましたが、ジョブがまだ開始されていない場合は機能しません。scheduler.deletejob() と scheduler.unschedule() も実行を停止しませんでした。
何か案は?
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
}
}