1

我正在尝试ResultSet并行读取 JDBC 并对 Quarkus 服务中的每条记录进行一些处理。中可能有很多记录,ResultSet所以我不想预先读取所有数据。我宁愿将结果流式传输到处理器。

我已经包装了ResultSet对象,所以我可以以线程安全的方式读取它。但是,我正在努力寻找一种在多个线程中读取结果的方法。我试过了,ExecutorService但是数据库上下文丢失了,并且ResultSet在线程中关闭了。

我考虑使用 SmallRyeMulti对象进行处理,但我很难找到一种将记录添加到项目列表的方法,而且我不确定是否会创建多个线程。

Quarkus 有首选的多线程库吗?

4

1 回答 1

2

您可以使用生产者-消费者模式:一个线程打开数据库连接,从 ResultSet 读取数据并将其放入大小有限的阻塞队列中,其他几个线程从该阻塞队列中获取数据并处理它

于 2020-09-24T20:15:12.200 回答