我正在尝试在我的spring应用程序中集成Quartz作业。我从here得到了这个例子。该示例显示使用simpletrigger
并在特定时间使用crontrigger
以重复间隔执行的作业。
我的要求是在应用程序启动时只运行一次作业。我删除了属性repeatInterval
,但应用程序抛出异常:
org.quartz.SchedulerException: Repeat Interval cannot be zero
有没有办法只安排一次工作?
谢谢..
答案 0 :(得分:8)
找到答案here
忽略repeatInterval
并设置repeatCount = 0
可以达到我的目的。
答案 1 :(得分:2)
Spring SimpleTriggerFactoryBean 完成工作:如果您没有指定开始时间,它会将其设置为“现在”#39;。
然而,我认为长期运行的一次性工作应被视为反模式,因为即使在双节点集群中它也不会起作用:如果运行该作业的节点发生故障,则不会有任何人会重新开始工作。
我更喜欢有一份重复的工作,例如每小时,但使用 @DisallowConcurrentExecution 进行注释。通过这种方式,您可以保证在最初托管作业的节点启动时以及在作业停止后,一个作业将正在运行。