【发布时间】: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",
【问题讨论】: