11

我正在尝试将 Quartz 作业集成到我的 spring 应用程序中。我从这里得到了这个例子。该示例显示了使用 a 以重复间隔执行的作业simpletrigger以及使用 a 在特定时间执行的作业crontrigger

我的要求是在应用程序启动时只运行一次作业。我删除了该属性repeatInterval,但应用程序引发了异常:

org.quartz.SchedulerException: Repeat Interval cannot be zero

有没有办法只安排一次工作?

谢谢..

4

2 回答 2

7

在这里找到了答案

忽略repeatIntervaland 设置可以满足repeatCount = 0我的要求。

于 2012-12-27T11:52:23.207 回答
1

Spring SimpleTriggerFactoryBean完成了这项工作:如果您不指定开始时间,它将设置为“现在”。

然而我认为长时间运行的一次性作业应该被认为是一种反模式,因为即使在 2 节点集群中它也不会工作:如果运行该作业的节点出现故障,将没有人会重新启动工作。

我更喜欢有一个重复的工作,例如每小时重复一次,但用@DisallowConcurrentExecution注释。通过这种方式,您可以保证在最初托管作业的节点启动时以及在它关闭后都将运行一个作业。

于 2015-04-16T11:26:59.300 回答