首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何不执行超过计划时间的作业

如何不执行超过计划时间的作业
EN

Stack Overflow用户
提问于 2017-02-15 10:34:02
回答 1查看 956关注 0票数 2

我观察到,通常在午夜排定的作业(但由于服务器进入节能模式而无法执行)是在服务器走出节能模式后执行的。这会导致意外的执行时间。

有没有办法告诉Quartz在作业离目标时间太远之后不要执行作业?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 14:52:19

是。你只需要告诉夸兹该怎么处理工作失火

触发器的另一个重要属性是它的“失火指令”。如果持久触发器由于调度程序被关闭而“错过”其触发时间,或者由于Quartz的线程池中没有用于执行作业的可用线程,则会发生错误触发。不同的触发器类型有不同的错误指令可供他们使用。默认情况下,它们使用“智能策略”指令--它具有基于触发器类型和配置的动态行为。当调度程序启动时,它会搜索任何未触发的持久触发器,然后根据它们各自配置的失火指令更新每个触发器。当您开始在您自己的项目中使用Quartz时,您应该熟悉在给定触发器类型上定义并在其JavaDoc中解释的错误指令。

具体的错误指令取决于您使用的Trigger类型。对于日常工作来说,可能是这样的:

代码语言:javascript
复制
trigger = newTrigger()
        .withIdentity("trigger1", "group1")
        .withSchedule(dailyAtHourAndMinute(0,0)
                .withMisfireHandlingInstructionDoNothing()) // set misfire instruction
        .build();

但是,这同样取决于触发器的类型。只需使用您的IDE来查看哪些withMisfire*()方法可用,并使用withMisfireHandlingInstructionDoNothingwithMisfireHandlingInstructionNextWithRemainingCount (两者都将忽略未执行的执行,并等待下一个预定的执行)。

当我不得不了解不同类型的错误指令时,除了Quartz的教程和API文档之外,我还使用了这个博客条目

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42246869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档