我想在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

10-04 11:21