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

如何让Akka Persistence Journal复用主数据库连接池?

Akka Persistence JDBC 复用主数据库连接池可行性解答

问题背景

现有Akka微服务,主数据库配置如下:

companyname.db {
  profile = "slick.jdbc.MySQLProfile$"
  db {
    driver = "org.mariadb.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:1234"
    user = "root"
    password = "password"
    password = ${?DB_PASSWORD}
    connectionPool = "HikariCP"
    numThreads = 20
    minConnections = 10
    maxConnections = 20
    connectionTestQuery = "SELECT 1"
    idleTimeout = 0
    maxLifetime = 595000
    keepAliveConnection = true
  }
}

Akka Persistence Journal配置如下:

akka {
  persistence {
    journal {
      plugin = "jdbc-journal"
    }
    snapshot-store {
      plugin = "jdbc-snapshot-store"
    }
  }
}

jdbc-journal = {
  slick = ${abaro.opt.db}
  bufferSize = 5000
}

jdbc-snapshot-store = {
  slick = ${abaro.opt.db}
}

jdbc-read-journal = {
  slick = ${abaro.opt.db}
}

通过日志、VisualVM及查询information_schema.processlist发现系统创建了2个独立的连接池,希望让Akka Persistence Journal复用业务代码使用的主数据库连接池。


可行性及解决方案

完全可行,当前出现两个连接池的核心原因是JDBC持久化组件引用的配置节点abaro.opt.db和主业务配置companyname.db是两个独立配置,导致Slick初始化了两个不同的连接池实例。只需将JDBC插件的配置指向主数据库配置节点即可实现复用:

1. 修改Akka Persistence JDBC配置

将所有JDBC相关插件的slick配置替换为主数据库的配置节点:

akka {
  persistence {
    journal {
      plugin = "jdbc-journal"
    }
    snapshot-store {
      plugin = "jdbc-snapshot-store"
    }
  }
}

jdbc-journal = {
  slick = ${companyname.db}
  bufferSize = 5000
}

jdbc-snapshot-store = {
  slick = ${companyname.db}
}

jdbc-read-journal = {
  slick = ${companyname.db}
}

2. 验证复用效果

修改完成后重启服务,通过以下方式确认连接池已复用:

  • 查看应用日志,确认仅初始化一个HikariCP连接池实例
  • 查询information_schema.processlist,数据库连接数符合主配置的maxConnections=20,无额外独立连接组
  • 通过VisualVM监控,仅存在一个HikariCP相关的连接池线程组及连接实例

注意事项

  • 主数据库连接池的maxConnections参数需评估业务代码与Akka Persistence的总并发需求,避免因连接耗尽导致服务异常
  • 确保Akka Persistence JDBC插件依赖的Slick版本与业务代码使用的Slick版本一致,避免版本兼容问题引发的配置解析或连接池初始化错误
  • 主数据库配置变更后,所有依赖该配置的组件(业务代码、Journal、Snapshot等)会同步生效,无需单独调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:24:54