java - Spring Batch - 即使 block 引发一些异常,是否有办法提交数据?

标签 java spring-boot spring-batch

我有一个从队列读取、处理并写入数据库的进程。即使过程失败,我也必须存储在数据库中。但 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/

相关文章:

java - SWT:防止树通过双击展开?

spring - 设置负载均衡器和 HTTPS 后无法连接到站点?

mysql - Spring boot Multi-Tenancy ,一个租户连接到多个模式

java - 找不到 ResourcelessTransactionManager

java - 跟踪映射中的重复插入(多线程环境)

Java:按类(class)级别对学生进行排序

java - 如何清除 ButtonGroup 中的选择,以便不选择关联的一组抽象按钮的元素?

java - 从包含它的类中获取 enum.values()

spring-boot 指标与 spring-cloud 指标

spring-batch - 未创建 Spring 批处理表时无异常