我需要为ImmediateTrigger设置什么样的失火指令?

时间:2016-07-29 09:03:31

标签: java quartz-scheduler misfire-instruction

我想同时只执行5个作业。如果由于缺少空闲线程而无法启动作业,我希望它在自由线程出现时启动,并且只有一次。 这是我的代码:

SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory("quartz.properties");
sched = schedFact.getScheduler();
sched.start();
String jobName = generateJobDetailName();
JobDetail jobDetail = new JobDetail(jobName, GRP_Immediate, MyJob.class);
jobDetail.getJobDataMap().put(MyJob.DATA, data);
Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 0);
trigger.setName(jobName + "_Simpletrigger");
sched.scheduleJob(jobDetail, trigger);

这是我的quartz.properties文件:

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5

但有一些我无法理解的东西。我需要为所需行为设置什么样的misfire instruction

1 个答案:

答案 0 :(得分:1)

您应该使用SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW(请注意您的Trigger是SimpleTrigger):

trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);

因为你有一个'一次性'触发器,应该尽早执行。