gpt4 book ai didi

java - Spring Batch 多线程数据库读取器

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:59 25 4
gpt4 key购买 nike

如果我理解正确的话,spring-batch 的读取器机制不会在读取器步骤中提供多线程机制。我一直在研究关于在数据库的主键上使用模块化算法作为多线程查询的分区机制的一些想法。我的问题有两个:

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

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

最佳答案

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

public List<DomainObject> read(){
return fetchDataFromDb();
}

private synchronized List<DomainObject> fetchProductAssociationData(){
//read your chunk-size of records from database which has status as 'NOT PROCESSED'
and change the status of the data which is read to 'IN PROGRESS'
return list;
}

关于java - Spring Batch 多线程数据库读取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com