0
最近,我將使用Akka Actor的Play應用程序更改爲經典的Scala應用程序。一起玩,我重寫應用程序的全局設置是這樣的:播放應用程序生命週期
import play.api._
import play.api.Play.current
object Global extends GlobalSettings {
var system: ActorSystem = _
override def onStart(app: Application) : Unit = {
super.onStart(app)
Logger.info("onStart")
system = ActorSystem("SysActor")
override def onStop(app: Application) : Unit = {
super.onStop(app)
if (system != null) {
system.terminate
Logger.info(system + " shutdown !")
}
}
}
在一個經典的Scala應用程序,我定義的主類在sbt run
要執行的命令,但它檢測的方式,像Play Scala
,該關閉或停止正在運行的應用程序?請注意,我使用Docker在Amazon EC2上發佈了該應用程序。
因此,對'addShutdownHook'的調用隱式關閉了我的應用程序的actor系統? – alifirat
不,對不起 - 我不清楚 - 你傳遞給'addShutdownHook'的線程中'run'方法的實現應該在關閉時執行任何需要的操作;在你的情況下,它應該叫'system.terminate' –
非常感謝這個例子:) – alifirat