我需要一份能在17小时和18小时之间每隔1分钟运行的工作,如果工作未完成,则不应重新启动。
org.springframework.scheduling.quartz.CronTriggerBean似乎是我需要的,但我没有发现并发性。
你知道一种适合我需要的石英豆吗? 我发现的每一个javadoc都几乎所有链接都被破坏了。 http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/scheduling/quartz/CronTriggerBean.html
或者我必须制作自己的豆类?
石英在1.8.5,弹簧在2.5.6 感谢。
答案 0 :(得分:1)
- 当然,CronTriggerBean适合您的情况。你需要的表达式是0 * 17 * *?并将从17.00开始每分钟运行,最后一次触发发生在17.59。
- 为了禁用并发性,在较新的版本中,您可以在作业类上放置@DisallowConcurrentExecution。在1.8版本中,我认为不支持注释,而是需要在您的作业类中放置“实现StatefulJob”,以便它实现一次只能由一个线程运行的StatefulJob
- 使用quartz 1.8的示例应用程序可以在http://www.mkyong.com/spring/spring-quartz-scheduler-example/
找到答案 1 :(得分:0)
可以找到2.5 JavaDoc here。
在Spring 2.5中,您可以在使用MethodInvokingJobDetailFactoryBean时在XML中设置并发属性。设置它可以防止多个实例同时运行,但应该注意的是,当上一个作业实例完成时,触发器将排队并启动。
以下是一个示例:
<bean id="fooJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="fooManager" />
<property name="targetMethod" value="myJOb" />
<property name="concurrent" value="true"/>
</bean>