【问题标题】:What kind of misfire instruction I need to set for ImmediateTrigger?我需要为 ImmediateTrigger 设置什么样的失火指令?
【发布时间】:2016-07-30 03:08:18
【问题描述】:

我只想同时执行 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

【问题讨论】:

    标签: java quartz-scheduler misfire-instruction


    【解决方案1】:

    你应该使用SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW(注意你的触发器是一个SimpleTrigger):

    trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
    

    因为您有一个“一次性”触发器,应该尽早执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多