Java Spring批处理重试-Spring是从停止的位置开始还是从头开始

Java Spring批处理重试-Spring是从停止的位置开始还是从头开始,java,spring-batch,Java,Spring Batch,以下是我的重试配置: <batch:job id="myLookUpLoadJob"> <batch:step id="myLookUpTruncateStep"> <batch:tasklet ref="myLookupTruncateTasklet" /> <batch:next on="*" to="myLookUpLoadStep"/>

以下是我的重试配置:

    <batch:job id="myLookUpLoadJob">   
          <batch:step id="myLookUpTruncateStep">
                 <batch:tasklet ref="myLookupTruncateTasklet" />
                 <batch:next on="*" to="myLookUpLoadStep"/>
          </batch:step> 
          <batch:step id="myLookUpLoadStep">               
                 <batch:tasklet>
                       <batch:chunk reader="myLookupItemReader"
                              writer="myLookupItemWriter" commit-interval="100" retry-limit="2">
                               <retryable-exception-classes>
                                        <include class=" org.springframework.dao.DataAccessResourceFailureException"/>
                              </retryable-exception-classes>
                       </batch:chunk>
                 </batch:tasklet>           
          </batch:step>
   </batch:job>

以下是我的问题,我无法从Spring doc获得答案-请输入:

当处理200行后发生异常时,当重试发生时,异常是从第201行开始还是从第1行开始

编辑

我试图解决的问题是,当作业运行时,在提交第一个块(100行)之后,与ItemReader的连接立即终止(重置)。然后重新启动作业并成功完成

我想知道这是否有帮助:

来自AbstractCursorItemReader


有一个选项(setUseSharedExtendedConnection(布尔值)这将与步骤处理的其余部分共享用于游标的连接。如果将此标志设置为true,则必须将数据源包装在ExtendedConnectionDataSourceProxy中,以防止在作为步骤处理的一部分执行每次提交后关闭和释放连接。还必须使用JDBC驱动程序supporting JDBC 3.0或更高版本,因为游标将在启用“HOLD_CURSORS_OVER_COMMIT”的附加选项的情况下打开。

这取决于您的读取器。
ItemReader
实现负责通过
ItemStream
接口回调在
执行上下文中保持它们自己的状态。如果
emReader
保持了它的状态(在本例中我假设的行号)通过
ItemStream#update
方法,如果
ItemReader
通过
ItemStream#open
回调方法恢复该状态,那么我希望它在正确的行重新启动。所有Spring提供的
ItemReader
实现都在有意义的地方利用了该功能。我只是不知道你的功能是否正确will,因为我对您的配置中的
myLookupItemReader
没有任何洞察。

感谢@Michael的详细回答。我正在使用Spring的ItemReader实现-JdbcCursorItemReader,因此默认行为应该有效。还有一个问题-是否会以同样的方式重试?编辑了该问题-添加了更多详细信息您使用的阅读器是什么?org.springframework.batch.item.database.JdbcCursorItemReader。另外,读和写是针对两个不同的数据源的,这就是为什么我最初想到追求XA分布式事务的原因。@MichaelMinella-您有任何更新吗?我计划在下周初测试重启(因为我们本周有一个部署)。AbstractCursorItemReader中的doc re-UseSharedExtendedConnection似乎很想尝试。如果您使用的是旧的JDBC驱动程序,一定要升级以便可以设置标志。