Spring + Quartz Fire作业仅在前一个完成时执行

时间:2015-04-28 21:39:42

标签: spring-mvc quartz-scheduler

我使用SpringMVC(4.x)和Quartz(2.x)。我设置一个bean定义文件来触发一个简单的工作,但是要确保只有在该作业的先前执行已经完成时才会触发该作业。是否有一个参数我可以通知SimpleTriggerFactoryBean以避免并发执行?

使用repeatInterval属性,我不会同时解雇工作吗?

我的Quartz Bean Definition XML

<bean id="autoPusherJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="jobClass" value="br.teste.AutoMessagePusherJob" />
    <property name="jobDataAsMap">
        <map>
            <entry key="userName" value="SystemCronJob"/>
            <entry key="message">
                <bean class ="br.teste.model.Message"/>
            </entry>            
        </map>
    </property>
    <property name="durability" value="true" />
</bean>

<bean id="simpleTrigger"  class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
    <property name="jobDetail" ref="autoPusherJob" />
    <property name="startDelay" value="1000" />
    <property name="repeatInterval" value="1000" />
</bean>


<bean  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobDetails">
        <list>
            <ref bean="autoPusherJob" />
        </list>
    </property>

    <property name="triggers">
        <list>
            <ref bean="simpleTrigger" />
        </list>
    </property>
</bean>

1 个答案:

答案 0 :(得分:2)

您的工作类需要使用DisallowConcurrentExecution注释进行注释。