【问题标题】:Quartz Spring Job executes multiple time .Must run just onceQuartz Spring Job 执行多次。必须只运行一次
【发布时间】:2016-04-28 01:33:34
【问题描述】:

我有一个 Quartz cron 作业,它在一天中的特定时间(比如凌晨 3:00)启动并运行良好,调用它的 itemreader 和 item writer。 问题是,它执行多次调用其项目阅读器。 现在,我只是在阅读器中保留了一个标志来阻止它。有没有更好的方法来做到这一点。

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>

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2011-09-01
      • 2020-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多