【发布时间】:2021-02-20 04:07:08
【问题描述】:
我在批处理作业中使用多线程步骤来处理来自源数据库的记录并写入目标数据库。 Step 是基于块的,由 JdbcpagingItemReader、Processor 和 JdbcBathItemWriter 组成。我知道,如果在 Step 处理期间发生任何异常,数据库事务将回滚整个块。我想了解这是如何在内部在 Spring 批处理中进行管理的?由于这是多线程步骤,因此无法保证处理器和写入器在块的同一线程中执行。该块可能由不同的线程处理。那么 Spring batch 是如何确保数据库事务在不同线程作用于同一个块的情况下正确回滚的呢?
【问题讨论】:
标签: multithreading spring-boot spring-batch spring-jdbc