[英]Quartz Spring CronTrigger fired more times than configured
我有一個cronTrigger工作“digestJob”:
<bean id="digestCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="digestJob" />
<property name="cronExpression" value="0 35 15 * * ?" />
</bean>
這是我的schedulerFactoryBean配置:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="digestCronTrigger" />
</list>
</property>
</bean>
問題是,digestCronTrigger應該在每天下午5:35被解雇,但它在指定時間被解雇了兩次。 但是,當我使用SimpleTrigger時:
<bean id="digestTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="digestJob" />
<property name="startDelay" value="0" />
<property name="repeatInterval" value="10000" />
</bean>
一切正常,觸發器每10秒觸發一次。 為什么digestCronTrigger被解雇了兩次? 我的cron表達式有問題,還是有任何我失蹤的屬性? 任何幫助都感激不盡。
我在Springsource論壇上發布了同樣的問題,在那里我得到了幫助,找出問題背后的原因:我正在加載應用程序上下文兩次。 后來我在這篇文章中發現如何避免兩次加載上下文。 現在情況正常。
如果您在啟動應用程序時創建觸發器並在quartz.properties文件中使用數據源,也會發生這種情況。 每次啟動服務器時,它都會向QRTZ_CRON_TRIGGERS
和QRTZ_TRIGGERS
表寫一個新觸發器,並在每次重啟時使用所有這些觸發器。
試試這個:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="actionObject" />
<property name="targetMethod" value="actionMethod" />
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression" value="0 15 17 * * ?"/>
</bean>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.