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 中的另一个。因此,在任何时候它都不知道必须继续读取数据多长时间,因为要读取的数据始终可用。在要消费的数据无法第二次消费的情况下,它会很好地工作。
我有一个 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 中的另一个。因此,在任何时候它都不知道必须继续读取数据多长时间,因为要读取的数据始终可用。在要消费的数据无法第二次消费的情况下,它会很好地工作。