2016-07-29 9 views
0

Ich möchte nur 5 Jobs zur gleichen Zeit ausführen. Und wenn der Job aufgrund fehlender freier Threads nicht gestartet werden kann, möchte ich, dass er startet, wenn der kostenlose Thread angezeigt wird, und nur einmal. Dies ist mein Code:Welche Art von Fehlzündungsanweisung muss ich für ImmediateTrigger einstellen?

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); 

Und das ist meine quartz.properties Datei:

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

Aber es ist etwas, was ich nicht verstehen kann. Welche Art von muss ich für das erforderliche Verhalten einstellen?

Antwort

1

sollten Sie verwenden SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW (beachten Sie, dass Ihre Trigger ist ein SimpleTrigger):

trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW); 

da Sie haben einen ‚one-shot‘ Trigger, so früh wie möglich, genau diejenigen, ausgeführt werden soll.