1

私の目的は、グループごとに同時実行ジョブの最大量​​を指定できるキュー システムを作成することです。つまり、グループ 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
}

}
4

1 に答える 1