如何在 akka 中处理 Slick db 对象

How to handle Slick db object in akka

我有一个程序每天安排一次任务。 每天,它都会从外部 API 获取数据并将结果存储到我的数据库中。我选择使用 akka actor 来完成此操作,使用 Slick 连接到我的数据库。

应用程序 "database inserting" 端的工作方式如下:

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

我灵活的依赖是

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

如果您在配置 Database 时使用 slick 的 thread pool & connection pool 功能,那么您应该能够共享一个 "global reference" 而不会因较长的 运行 应用程序而产生负面影响.