You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Quarkus Reactive Postgres Client中修改事务隔离级别

解决方案

需求可实现,共有两种可选实现方式,具体操作如下:

方式1:为单个事务单独指定隔离级别(推荐)

如果仅需要部分事务使用READ_UNCOMMITTED隔离级别,可使用withTransaction的重载方法,传入TransactionOptions参数指定隔离级别即可:

  • 首先引入必要类:
import io.vertx.mutiny.sqlclient.TransactionOptions;
import io.vertx.sqlclient.IsolationLevel;
  • 构造配置并调用事务方法:
// 构造事务配置,指定隔离级别
TransactionOptions txOptions = TransactionOptions.create()
  .setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);

// 传入配置执行事务
pgClient.withTransaction(txOptions, transaction -> {
  // 此处编写你的DQL/DML业务逻辑,所有操作都运行在指定隔离级别的事务中
  return transaction.query("你的查询语句").execute()
    .chain(result -> {
      // 后续事务操作
    });
})
.subscribe().with(
  success -> /* 事务提交成功后的逻辑 */,
  fail -> /* 事务回滚后的异常处理逻辑 */
);

方式2:全局配置默认事务隔离级别

如果所有事务都需要使用READ_UNCOMMITTED隔离级别,可直接在项目的application.properties配置文件中添加如下配置,无需修改业务代码:

quarkus.datasource.reactive.transaction-isolation-level=READ_UNCOMMITTED

注意:PostgreSQL数据库自身的实现中,READ_UNCOMMITTED隔离级别的实际行为和READ_COMMITTED完全一致,数据库内核不支持脏读特性,如果你的需求是实现脏读,需要额外评估该数据库特性的影响。

内容的提问来源于stack exchange,提问作者Ahmet K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:36:05