Quartz Spring 作业执行多次。必须 运行 只执行一次

Quartz Spring Job executes multiple time .Must run just once

我有一个 Quartz cron 作业,它在一天中的特定时间(比如 3:00 上午)启动并且运行良好,调用它的项目reader 和项目编写器。 问题是,它多次执行调用其项目 reader。 现在,我只是在 reader 中保留了一个标志来阻止它。有没有更好的方法呢。

commit-interval = 60 有问题吗?作为没有。 reader 必须读取的记录数是 10。话虽如此,reader 读取了这 10 个项目,作者再次将其写入 DB.Now reader 被调用,这是一个问题。工作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>

我大概能理解这个问题。实际上,Quartz 是一项 cron 作业,它从一个 table 读取数据,然后写入 DB 中的另一个。因此,在任何时候它都不知道必须继续读取数据多长时间,因为要读取的数据始终可用。在要消费的数据无法第二次消费的情况下,它会很好地工作。