Quarkus读取"ResultSet"并使用多线程进行处理



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

我已经包装了ResultSet对象,这样我就可以以线程安全的方式从中读取。然而,我正在努力寻找一种在多个线程中读取结果的方法。我尝试过ExecutorService,但DB上下文丢失,线程中的ResultSet已关闭。

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

Quarkus是否有首选的多线程库?

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

最新更新