小编Nik*_*Nik的帖子

Spring Batch:在项目写入​​期间跳过

Spring文档(第46页,第5.1.7节)说:

默认情况下,无论重试还是跳过,从ItemWriter抛出的任何异常都将导致Step控制的事务回滚.如果如上所述配置了skip,则从ItemReader抛出的异常不会导致回滚.

我的提交间隔设置为10.所以我对上面段落的理解是,如果从10块的大块中读取第7条记录时出错,则会跳过该项目,并且itemReader将提前发送正确的9条记录.

但是,如果第7条记录在写入期间出错 - 将不会写入10条记录,并且将发生回滚.

但是,当我包含在skipPolicy中抛出的错误时,itemWriter会将剩余的9条记录写入数据库,跳过错误的错误.这与上面提到的相矛盾.

任何人都可以解释"在项目写作过程中跳过"的概念.

即使抛出单个错误,我得到以下内容:

SkipCount为-1​​两次,然后为0,并且在我的shouldSkip(Object,Throwable)方法中再次为-1. - 我没有得到这种行为.

回滚计数也是2 - 它是什么意思?为什么是2?


@michael是否有可能使用某些场景来解释行为!

比如"我正在从一个文件中读取20条记录并在一些处理后写入数据库.我有一个跳过策略设置用于某些异常.如果在读取,处理,写入期间发生异常将会发生什么 - 块将如何已提交,默认重试如何工作,如何更新计数等等......"

这对我来说真的是一个很大的帮助,因为我仍然对这种行为感到困惑.

spring-batch

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

spring-batch ×1