Quartz Spring Job执行多次。只运行一次

时间:2016-01-21 17:08:00

标签: java spring cron scheduled-tasks quartz-scheduler

我有一个Quartz cron作业,它在一天中的某个特定时间(例如凌晨3点)启动并且运行良好,调用其项目阅读器和项目编写器。 问题是,它多次调用其项目阅读器。 现在,我刚刚在阅读器中留下了一面旗帜来阻止它。有没有更好的方法来做到这一点。

commit-interval = 60是一个问题吗?作为号码。读者必须阅读的记录是10。据说,读者读取这10个项目,并且作者将其写入DB。现在再次调用读者,这是一个问题。作业xml如下:

 <batch:job id="AAA_job">
        <batch:step id="step1">
             <batch:tasklet>
                    <batch:chunk reader="XReader" writer="XWriter"  commit-interval="60">
                </batch:chunk> 
            </batch:tasklet> 
        </batch:step>
    </batch:job>
    <bean id="XReader"
        class="com.X.store.batch.X.jobs.XXReader"
        scope="step">
        <property name="AName" value="${AAA}"></property>
        <property name="bu" ref="bu" />
    </bean>

    <bean id="XWriter" class="com.X.store.batch.X.jobs.XXWriter" scope="step" >
         <constructor-arg ref="xDS" /> 
         <property name="SSU" value="${ssu}" />
    </bean>

1 个答案:

答案 0 :(得分:0)

我可能理解这个问题。实际上,作为一个cron作业的Quartz从一个表读取数据然后在DB中写入另一个表。因此,在任何时候它都不了解它需要多长时间才能继续读取数据,因为要读取的数据始终可用。如果要消耗的数据第二次无法使用,它将很有效。