应用程序启动时Quartz一次性工作

时间:2012-12-27 10:27:13

标签: spring cron quartz-scheduler

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

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

org.quartz.SchedulerException: Repeat Interval cannot be zero

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

谢谢..

2 个答案:

答案 0 :(得分:8)

找到答案here

忽略repeatInterval并设置repeatCount = 0可以达到我的目的。

答案 1 :(得分:2)

Spring SimpleTriggerFactoryBean 完成工作:如果您没有指定开始时间,它会将其设置为“现在”#39;。

然而,我认为长期运行的一次性工作应被视为反模式,因为即使在双节点集群中它也不会起作用:如果运行该作业的节点发生故障,则不会有任何人会重新开始工作。

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