gpt4 book ai didi

java - executorservice 以 block 的形式从数据库中读取数据并在其上运行进程

转载 作者:行者123 更新时间:2023-11-29 08:48:17 24 4
gpt4 key购买 nike

我正在尝试编写一个从数据库读取数据并将其上传到云数据存储区的过程。

如何决定数据的分区策略?我想分块查询表并在 10 个线程中处理每个 block 。每个线程基本上会将数据发送到云上 10 节点集群上的单个节点。

在下面的多线程代码中,提取并发送 10 个并发请求以将数据上传到云的数据查询将在哪里?非常重要的是,我不会丢失到目前为止我的数据库查询已处理的内容的游标,以防失败,因此在数据库中,例如,一旦处理了一批 100 条记录,它应该将这些记录状态从 PENDING 更新为 DONE该记录的数据库列。此作业将每 10 分钟运行一次,以从源数据库中提取数据。

public class Caller {
public static void main(String[] args) {

ExecutorService executor = Executors.newFixedThreadPool(10);

for (int i = 0; i < 10; i++) {
Runnable worker = new DomainCDCProcessor(i);
executor.execute(worker);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
System.out.println("Finished all threads");
}


}

最佳答案

在启动 worker 之前进行选择以确定要处理的记录的所有主要 ID 的集合或范围(第一个 ID - 最后一个 ID)。给每个 worker 一个子集或范围部分来工作。确保 worker 永远不会离开指定的集合或范围。

关于java - executorservice 以 block 的形式从数据库中读取数据并在其上运行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24006595/

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