Vert.x queryStream似乎挂起约4950行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vert.x queryStream似乎挂起约4950行相关的知识,希望对你有一定的参考价值。
我正在使用Vertx 3解决一个奇怪的问题。我已经为HTTP路由创建了一个请求处理程序,它查询PostgreSQL数据库。这一切都是非常标准的,它可以工作,直到行数超过4950.这是尽管使用queryStream,它应该扩展。
我简化了下面的代码来说明问题:
dbClient.getConnection(res -> {
if (res.failed()) {
event.fail(500);
return;
}
try (final SQLConnection conn = res.result()) {
conn.queryStream("select x, y, z from large_table", stream -> {
if (stream.succeeded()) {
final SQLRowStream rowStream = stream.result();
rowStream.handler(row -> {
// Do something with row here, but leaving it empty now
}).endHandler(endHandler -> {
response.end();
});
}
});
}
我该如何解决此问题?当我在psql中运行查询或在Java SE中使用常规JDBC时,它没有任何问题。
如果我在查询中附加“LIMIT 4000”,它可以正常工作。
或者我误解了Vertx的JDBC支持,因为我需要执行此操作作为阻止代码,因为它需要这么长时间?
答案
似乎升级到vert.x 3.5.2解决了这个问题。我不确定实际根本原因是什么。
以上是关于Vert.x queryStream似乎挂起约4950行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Vert.x (java) 中使用 Jackson 流式传输 JSON 结果
Kotlin Vert.x Postgres pub/sub 不工作