Spring + quartz我应该制作自己的bean吗?

时间:2014-10-28 10:30:26

标签: spring quartz-scheduler

我需要一份能在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 感谢。

2 个答案:

答案 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>