我需要实现一个Quartz作业,它的行为会有所不同,具体取决于它的运行次数。
你认为最好的(或至少是好的)方式是什么?
将计数器保持为状态似乎不起作用,因为看起来Quartz每次都会重新创建它的作业。
感谢。
答案 0 :(得分:2)
这就是Quartz PersistJobDataAfterExecution注释允许您轻松实现而无需使用任何额外的框架/逻辑。
来自PersistJobDataAfterExecution(Quartz 2.2.0)javadoc:
将Job类标记为对其进行更新的注释的注释 JobDataMap在执行期间,并希望调度程序重新存储 执行完成时的JobDataMap。
因此,当您的工作开始时,您只需从JobDataMap中读取作业执行计数器,该计数器将传递给作业的execute方法。如果JobDataMap中不存在计数器,则将其初始化为0.在作业执行结束时,您将在JobDataMap中递增计数器。这个更新的计数器值将在下一个作业执行期间可用。