2016-01-21 115 views
0

我有一个Quartz cron作业,它在一天中的某个特定时间(比如凌晨3点)启动,并且可以很好地调用它的itemreader和item作家。 问题是,它多次调用其物品读取器。 现在,我只是在旗帜上阻止了它在读者身上。有一个更好的方法吗。石英弹簧作业执行多次。只需运行一次

commit-interval = 60是否有问题?作为没有。读者必须阅读的记录数为10个。据说,读者读取这10个条目并将其写入数据库。现在又读者被称为哪个是问题。 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> 

回答

0

我大概可以理解这个问题。事实上,作为cron作业的Quartz从一个表读取数据,然后写入数据库中的另一个表。所以,在任何时候,由于要读取的数据总是可用,所以它不知道读取数据需要多长时间。如果第二次使用的数据不能用于消费,那么它将工作得很好。