0
我的目标是创建一个队列系统,我可以为每个组指定最大并发作业数量,即对于组A,最多3个作业应该同时运行,对于组B max Y工作等等。作业可以在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