我正在解决Vertx3的一个奇怪问题,我已经为一个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中使用常规JDBC时,它没有问题。
如果我将"LIMIT 4000“附加到查询,它可以正常工作。
或者我误解了Vertx的JDBC支持,因为我不得不将其作为阻塞代码来执行,因为它花费了这么长的时间?
发布于 2018-03-02 04:03:40
升级到vert.x 3.5.2似乎解决了这个问题。我不确定真正的根本原因是什么。
https://stackoverflow.com/questions/48687531
复制相似问题