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

Micronaut中使用R2DBC连接PostgreSQL时持续出现连接关闭错误

Micronaut + R2DBC PostgreSQL 请求正常但反复抛出Connection Closed错误

问题描述

在Micronaut应用中使用R2DBC连接PostgreSQL,所有数据库请求都能正常完成,但每次请求都会输出以下错误日志:

[reactor-tcp-epoll-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped
io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException: Connection closed

相关依赖:

implementation("io.micronaut.data:micronaut-data-r2dbc")
implementation("io.micronaut.r2dbc:micronaut-r2dbc-core")
runtimeOnly("org.postgresql:r2dbc-postgresql")

数据库配置(application.yml):

r2dbc:
    datasources:
        default:
          url: r2dbc:postgresql://localhost:5432/backend
          username: xxx
          password: xxx

可能的解决方案

  • 启用并配置连接池
    默认情况下R2DBC可能未启用连接池或配置不合理,导致连接被提前关闭。在application.yml中添加连接池配置:

    r2dbc:
      datasources:
        default:
          url: r2dbc:postgresql://localhost:5432/backend
          username: xxx
          password: xxx
          pool:
            enabled: true
            initial-size: 5
            max-size: 10
            max-idle-time: 30m
    

    调整initial-size、max-size和max-idle-time参数适配你的业务流量,避免连接被过早回收。

  • 检查事务上下文处理
    确认数据访问方法的事务注解@Transactional是否正确作用于返回Mono/Flux的反应式方法上,确保事务上下文在整个流处理过程中保持有效,避免连接被提前释放。

  • 验证驱动版本兼容性
    检查r2dbc-postgresql驱动版本是否与Micronaut Data、Micronaut R2DBC Core版本兼容。可以参考Micronaut官方文档的版本矩阵,升级或降级驱动至匹配版本。

  • 调整日志级别消除误报
    若确认业务不受影响,该错误可能是连接池正常回收连接时的日志误报。可以降低相关日志级别减少干扰:

    logging:
      level:
        reactor.core.publisher.Operators: WARN
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:15:13