我有一个从队列读取、处理并写入数据库的进程。即使过程失败,我也必须存储在数据库中。但 Spring Batch 步骤是事务性的,并且始终回滚更改。那么,即使块引发一些异常,有没有办法提交数据呢?
EDIT I:
我尝试使用 Tasklet 但得到相同的行为。
提前致谢。
在配置步骤期间,您可以使用noRollback()
配置不会导致回滚的异常列表。任何作为已配置异常子类的异常都不会回滚。这意味着如果您只是不想回滚,请将其设置为Exception
这是所有异常的父级。
可以从以下位置找到一个示例docs https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#controllingRollback :
@Bean
public Step step1() {
return this.stepBuilderFactory.get("step1")
.<String, String>chunk(2)
.reader(itemReader())
.writer(itemWriter())
.faultTolerant()
.noRollback(Exception.class)
.build();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)