簡體   English   中英

Quartz Spring CronTrigger發射次數超過配置次數

[英]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_TRIGGERSQRTZ_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM