我有一个QUARTZ JOB,每10分钟启动一次。
如果JOB在10分钟内没有完成,那么在接下来的第10分钟,另一个JOB将开始。
我想要的是:如果前一个JOB已经完成运行,则下一个JOB(每10分钟后)应该仅启动。有没有办法做到这一点?
答案 0 :(得分:10)
@DisallowConcurrentExecution是一个可以添加到的注释 告诉Quartz不要执行a的多个实例的Job类 给定的工作定义(指的是给定的工作类) 同时。注意那里的措辞,因为它被选中了 小心。在上一节的示例中,如果 " SalesReportJob"有这个注释,而不是只有一个实例 " SalesReportForJoe"可以在给定时间执行,但它可以执行 与" SalesReportForMike"的实例同时发生。约束 基于实例定义(JobDetail),而不是实例定义 工作班。然而,它决定了(在石英的设计期间) 在类本身上进行注释,因为它确实如此 通常会对类的编码方式产生影响。
如果您不希望SalesReportForMike和SalesReportForJoe同时运行,那么您可以将调度程序的ThreadPool大小设置为1.因此,在任何给定时间只会运行一个作业。
另请查看StatefulJob
答案 1 :(得分:1)
查看DisallowConcurrentExecution注释,该注释将阻止同一作业的多个实例同时运行。