Spring Batch多线程DB读卡器

时间:2018-03-08 16:33:27

标签: java spring multithreading spring-boot spring-batch

如果我理解正确,那么Spring-batch的读者机制并没有在读者步骤中提供多线程的机制。我一直在讨论在数据库的主键上使用模运算作为多线程查询的分区机制的一些想法。我的问题有两个:

(1)我是否遗漏了在阅读器步骤中运行多个线程的能力,特别是在进行数据库查询方面?

(2)如果我想出一个好的解决方案,是否值得为此开一个Jira并将其提交回spring-batch codebase?很明显https://github.com/spring-projects/spring-batch/blob/master/CONTRIBUTING.md将是起点,但春天的家伙似乎没有一个明显的通信邮件列表。所以我想在开票之前我会问这个问题。

1 个答案:

答案 0 :(得分:1)

可以通过在表中添加一个名为STATUS的列来跟踪已处理记录的状态来轻松完成此操作。最初,当您将数据加载到表中时,将状态设置为“未处理”,当ItemReader读取记录块时,将状态设置为“进行中”。一旦您的ItemProcessor或ItemWriter完成处理,将状态从“正在进行中”更改为“已处理”。确保将从数据库中获取数据的方法设置为“同步”。这将确保多个线程不会从数据库中获取相同的数据。

df.groupby(["col-a", "col-b", "col-z"])["value"].sum()