我有一个从队列读取、处理并写入数据库的进程。即使过程失败,我也必须存储在数据库中。但 Spring Batch 步骤是事务性的,并且始终回滚更改。那么,即使 block 引发一些异常,有没有办法提交数据?
编辑我:
我尝试使用 Tasklet 但得到了相同的行为。
提前致谢。
最佳答案
在配置步骤时,可以使用noRollback()
来配置不会导致回滚的异常列表。任何作为已配置异常子类的异常都不会回滚。这意味着如果您只是想永远不回滚,请将其设置为 Exception
,它是所有异常的父级。
可以在 docs 中找到示例:
@Bean
public Step step1() {
return this.stepBuilderFactory.get("step1")
.<String, String>chunk(2)
.reader(itemReader())
.writer(itemWriter())
.faultTolerant()
.noRollback(Exception.class)
.build();
}
关于java - Spring Batch - 即使 block 引发一些异常,是否有办法提交数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61567420/