quartz对不同的trigger提供了不同的misfire的处理策略,默认是MISFIRE_INSTRUCTION_SMART_POLICY,这里讲解一下如何个性设置。

方式一:强转设置

SimpleTrigger trigger = (SimpleTrigger) newTrigger()
                .withIdentity("trigger1", "group1")
                //如果你没有调用 *startAt(..)*方法,那么当前时间(立刻激活)将被赋值。
                .startAt(startTime)
                .build();
        ((SimpleTriggerImpl)trigger).setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT);

方式二:流式api设置

SimpleTrigger trigger1 = newTrigger().withIdentity("trigger1", "group1").startAt(startTime)
                .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(10)
                        .withRepeatCount(4)
                        .withMisfireHandlingInstructionNowWithRemainingCount())
                .build();

或者

CronTrigger trigger = newTrigger()
                .withIdentity("trigger1", "group1")
                .withSchedule(cronSchedule("0/20 * * * * ?")
                .withMisfireHandlingInstructionDoNothing())
                .build();

codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...


引用和评论

0 条评论