Scala Play Framework 数据库关闭生命周期挂钩顺序

Scala Play Framework DB Shutdown Lifecycle Hook Order

我有一个 Scala (2.11.x),Play 2.5.10 应用程序。在这个应用程序中,我有各种 Akka actor,它们将数据读取和写入数据库。我将按照 in the docs 所述通过生命周期停止挂钩终止这些参与者。对于其中一个参与者,在发送 PoisonPill 终止它之前,我想向它发送一条消息以对数据库进行最后一次写入。但是,我收到一个异常,因为在收到该消息时数据库连接已经终止(有时,这是一个竞争条件)。

Play中有没有办法控制生命周期关闭钩子的执行顺序?

scaladoc 中说:

Stop hooks are executed when the application is shutdown, in reverse from when they were registered.

所以,不是真的。

不过,您也许可以完全从 actors 内部处理它。这是有关如何在参与者系统中协调关闭的指南。不过,我不确定它与基于游戏的应用程序的集成情况如何:http://letitcrash.com/post/30165507578/shutdown-patterns-in-akka-2