1

我正在使用石英的JDBCJobStore. 我使用CronScheduleBuilder.cronSchedule(). 如果任何计划的作业失败,我需要在重试次数和重试间隔的情况下重试它。那么,如何将这些参数添加到工作表中?

4

1 回答 1

0

据我所知,Quartz 无法做到这一点。你将不得不自己管理它。

如果任何作业调度程序失败

我认为上面的行指向任何预定作业的失败。一旦触发器触发,关联的作业就会开始运行。所以,这里有两种失败的可能性。

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

Quartz 可以做到最好。我们为每个作业设置了请求恢复属性。如果设置为 true,我们告诉quartz,“如果调度程序在执行期间硬关闭,则在调度程序下次启动时恢复/重新运行此作业”。有关此属性的更多信息,请点击此处

  • 该作业在执行期间引发了异常。

这可能意味着在我们的业务逻辑中它已经失败了。(注意:Quartz 不要假设这个工作是失败的。你必须在你的工作生命周期中决定它因为这个异常而失败。)

您可以通过在 try/catch 块中包含作业的 exeucute() 方法中的所有代码来处理此问题。如果发生任何严重异常,在 catch 块中,我们将以我们想要重新安排作业的方式处理它(即让作业再次重试)。

因此,为此,您始终可以创建一个新的 jobdetail 并触发(通过使用失败作业的 jobExecutionContext 中的一些参数)来重新创建/重新安排作业。

于 2013-06-19T03:26:46.417 回答