JdbcCursorItemReader:重新启动时重置光标位置吗?

时间:2019-08-15 07:28:13

标签: java spring-batch

我正在使用JdbcCursorItemReader的实例从数据库中读取我的数据。有没有一种简单的方法可以重置光标位置?我想我可以实现一个自定义步骤侦听器来始终重置该值,但我更喜欢配置选项。

如果重新启动失败的作业,当再次执行失败的步骤时,我需要读取所有行。此刻,在处理了一个块之后,光标位置通过键JdbcCursorItemReader.read.count保持不变。重新启动后不会再次读取成功处理的行。

我的工作配置看起来像这样:

<batch:job id="myJob">
    <batch:step id="step1" next="step2">
        <batch:tasklet>
            <batch:chunk commit-interval="1000"
                reader="myJdbcCursorItemReader" 
                processor="step1Processor"
                writer="myJdbcBatchItemWriter" />
            <batch:transaction-attributes
                isolation="READ_COMMITTED" propagation="REQUIRED" timeout="60" />
        </batch:tasklet>
    </batch:step>
    [...]
    <bean id="myJdbcCursorItemReader"
            class="org.springframework.batch.item.database.JdbcCursorItemReader"
            scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql" value="select ..." />
        <property name="rowMapper">
            <bean class="foo.bar.MyRowMapper" />
        </property>
    </bean>

0 个答案:

没有答案