如何在Quartz Scheduler中添加重试次数和重试间隔(以秒为单位)



我使用的是Quartz的JDBCJobStore。我使用CronScheduleBuilder.cronSchedule()将工作细节、触发器信息添加到表中。如果任何计划作业失败,我需要在给定重试次数和重试间隔的情况下对其进行重试。那么,如何将这些参数添加到作业的表中呢?

据我所知,Quartz没有办法做到这一点。你们必须自己处理这件事。

如果任何作业调度器失败

我假设上面的行指向任何计划作业的失败。一旦触发,关联的作业就开始运行。因此,这里有两种失败的可能性。

  • 调度程序在作业正在执行时被硬关闭。

石英可以最好地处理这个问题。我们为每个作业设置了请求恢复属性。如果设置为true,我们告诉quartz,"如果调度程序在执行期间硬关闭,则在调度程序下次启动时恢复/重新运行此作业"。关于此属性的更多信息请点击此处。

  • 作业在执行过程中抛出异常。

这可能意味着在我们的业务逻辑中它已经失败。(注:Quartz并不认为这项工作失败了。您必须在作业的生命周期中确定由于此异常而失败。

你可以通过在try/catch块中包含job的execute()方法中的所有代码来处理这个问题。如果发生任何严重异常,在catch块中,我们将以我们想要重新调度作业的方式来处理它(即使作业再次重试)。

所以,对于这个,您总是可以创建一个新的jobdetail和触发器(通过使用失败作业的jobeexecutioncontext中的一些参数)来重新创建/重新调度作业。

相关内容

最新更新