【问题标题】:How to handle Slick db object in akka如何在akka中处理Slick db对象
【发布时间】:2019-06-24 07:45:42
【问题描述】:

我有一个每天安排一次任务的程序。 每天,它都会从外部 API 获取数据并将结果存储到我的数据库中。我选择用 akka 演员来做这件事,使用 Slick 连接到我的数据库。

应用程序的“数据库插入”端的工作方式如下:

  • 插入数据的请求发送给“DatabaseInsertManager”参与者
  • 对于每个传入的请求,此管理器都会创建一个子“DatabaseInserter”,根据管理器提供的请求,该子程序将实际调用数据库
  • 请求完成后,插入器死亡

为了调用数据库,我有一个对数据库 Slick 对象的全局引用,这些 DatabaseInserter 都使用该对象。我想知道这是否是正确的做法。这个全球参考会因某种原因而死吗? 或者,最好为每个 DatabaseInverter 创建一个新的 DB 对象,在 postStop 方法中使用 db.close()? 最后一个选项是:我在日常工作开始时创建一个 db 对象,并在工作完成后关闭它(通常是 15 分钟后)。

我的光滑依赖是

"com.typesafe.slick" %% "slick" % "3.2.3",
"com.typesafe.slick" %% "slick-hikaricp" % "3.2.3",

【问题讨论】:

    标签: scala akka slick


    【解决方案1】:

    如果您在配置 Database 时使用 slick 的 thread pool & connection pool 功能,那么您应该能够共享“全局引用”,而不会因长时间运行的应用程序而产生负面影响。

    【讨论】:

    • 好的,谢谢。我相信这就是我已经采取的措施,而且从长远来看它确实运作良好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2018-11-22
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多