Ema*_*Lal 5 scala sbt sbt-native-packager akka-http
我刚用akka-http创建了我的第一个休息服务器.问题是我不知道如何以这样的方式部署服务器,我可以优雅地关闭actor系统.
例如,我在这里找到了一些东西:https://stackoverflow.com/a/17399574/5388513你可以使用Akka的微内核,但它已被弃用.我尝试使用sbt-native-package,但我不知道如何优雅地关闭actor系统.
谢谢!
Mar*_*ski 29
你可以添加关机钩子:
// import scala.concurrent.duration._
//shutdown Hook
scala.sys.addShutdownHook {
logger.info("Terminating...")
actorSystem.terminate()
Await.result(actorSystem.whenTerminated, 30 seconds)
logger.info("Terminated... Bye")
}
Run Code Online (Sandbox Code Playgroud)
一种解决方案是向 ActorSystem 添加一个 Actor,用于侦听特定信号并调用 shutdown:
import akka.actor.{Actor, Props}
object ShutdownMessage
object KillSwitchActor {
def props : Props = Props[KillSwitchActor]
}
class KillSwitchActor extends Actor {
def receive = {
case ShutdownMessage => context.system.shutdown()
case _ => {}
}
}//end class KillSwitchActor
Run Code Online (Sandbox Code Playgroud)
然后你只需设置你的 KillSwitchActor:
import akka.actor.ActorSystem
val actorSystem : ActorSystem = ActorSystem("testKillSwitch")
val killRef = actorSystem actorOf KillSwitchActor.props
//"Say hello to my little friend!" - Tony Montana
if(someTerminatingCondition) { killRef ! ShutdownMessage }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7169 次 |
| 最近记录: |