如何在Akka中处理Slick db对象

时间:2019-06-24 07:45:42

标签: scala akka slick

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

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

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

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

我光滑的依赖项是

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

1 个答案:

答案 0 :(得分:0)

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