我想在postgresql上执行昂贵的查询(运行时间约7-60秒),查询开始后偶尔不需要结果,因此我想取消它。我想使用vert.x库来执行此操作。我看过使用io.vertx.reactivex.pgclient.PgConnection
,因为它支持取消查询。但是,似乎没有办法从合并源中获取PgConnection
。另一个选项是使用从io.vertx.reactivex.sqlclient.SqlConnection
返回的PgPool
,但这不支持取消查询。因此,我的问题是如何取消对池连接的查询?
最佳答案
pgPool.rxGetConnection().flatMap(
conn -> {
PgConnection pgconn = new PgConnection((io.vertx.pgclient.PgConnection)conn.getDelegate());
...
return Single.just(conn);
}
).subscribe(conn -> conn.close());
进行上述操作将使您从
io.vertx.reactivex.pgclient.PgConnection
获得的io.vertx.reactivex.sqlclient.SqlConnection
中得到一个rxGetConnection