【发布时间】:2020-11-21 08:32:10
【问题描述】:
我正在使用 Spring Batch 使用以下场景处理数据库表中的记录:
- 使用 5 个并行步骤同时处理来自 5 个表的数据
- 每个并行步骤还有 5 个线程来处理单个表中的记录
这里是作业配置的总结:TestJob -> Parallel Step1 & Step2 -> Step 1 使用 2 个线程,Step 2 使用 2 个线程
对于 Spring Batch 表,我尝试使用 SQL Server 数据库、内存数据库中的 HSQL,但是从 BATCH_STEP_EXECUTION_SEQ 中选择时,Spring 批处理卡住了 Spring 批处理尝试插入到 BATCH_STEP_EXECUTION 表中,因此试图从挂起的 BATCH_STEP_EXECUTION_SEQ 表中获取 ID。
我使用的是 Spring Boot 2.2.2.RELEASE 版本。我尝试使用不同的创建隔离级别覆盖 jobrepository 配置,但问题始终存在。
注意: 在以下情况下一切正常:
- 一次处理并发表,每张表单线程处理
- 一次处理单表,多线程处理单表
非常感谢任何解决问题的帮助/指针。
谢谢, 哈尔克里山
【问题讨论】:
-
这个问题是间歇性的,有时它正在工作
-
我记得曾经遇到过类似的问题,不知道你是如何设置隔离级别的,但它必须是某种影响jobrepository的方式docs.spring.io/spring-batch/docs/current/reference/html/…
-
感谢您指出设置隔离级别,我尝试了不同的隔离级别,但问题仍然存在。
标签: java spring multithreading parallel-processing spring-batch