Spring Batch:在写入期间回滚后未兑现提交间隔 [英] Spring Batch: Commit-Interval not honored after roll back during write

查看:49
本文介绍了Spring Batch:在写入期间回滚后未兑现提交间隔的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我的提交间隔是 1000.

Say my commit interval is 1000.

在写入过程中,我在第 990 条记录处出现错误,根据跳过策略可以跳过该记录.

And during writing I get a error at 990th record which is skippable as per skip policy.

因此会发生回滚,并且作者将再次开始从记录 1 开始写入相同的记录.

So a rollback will occur and the writer will start again writing the same records from record 1.

然而,这一次,它正在提交每条记录.它不尊重提交间隔.这使工作变得缓慢.

However, this time, It is commiting on each record. It does not honour commit interval. This is making the job dead slow.

为什么会有这样的行为??我的配置中是否缺少某些内容?

Why the behavior is like that ?? Am I missing something in my configuration ??

谢谢.

推荐答案

spring batch 必须强制隔离坏项目,基本上它回滚块并使用 commit-rate=1 处理/写入每个项目找到坏的(在处理器或写入器中)

that bevaviour is mandatory for spring batch to isolate the bad item(s), basically it rollbacks the chunk and processes/writes each item with commit-rate=1 to find the bad one (in either processor or writer)

春季批次论坛对类似问题的评论

相关部分

--> 5 items read, processing starts
<processor called:15>
<processor called:16>
<processor called:17> will throw an error on write
<processor called:18>
<processor called:19>
<before write:[15, 16, 17, 18, 19]>
<on write error>
--> error on item 17, but it was in the list, lets find it
--> rollback
<before chunk>
--> spring batch goes through all items of the chunk again to find the bad item
--> basically it runs now with commit-rate="1" (only for this chunk)
<processor called:15>
<after write:[15]>
<after chunk>
<before chunk>
<processor called:16>
<after write:[16]>
<after chunk>
<before chunk>
<processor called:17> called again for the bad item, because it's still unknown to spring batch, that this is the bad one
--> no write, because itemWriter.write() was called with the bad item only and did throw an exception (again)
--> but now spring batch knows the bad item
<before chunk>

这篇关于Spring Batch:在写入期间回滚后未兑现提交间隔的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆