2017-08-03 37 views
0

大多数初学者的阿卡例子似乎倡导呼吁演员系统的stop()shutdown()方法,像这样:阿卡后台程序服务

object Main extends App { 
    // create the ActorSystem 
    val system = ActorSystem("HelloSystem") 

    // put your actors to work here ... 

    // shut down the ActorSystem when the work is finished 
    system.stop 
    system.shutdown 
} 

但是如果你的阿卡应用旨在为正在运行的服务,应该(可以想象)永远活着?这意味着它开始了,演员系统被创建,并且演员只是空闲直到工作(可能来自连接的客户端等等)需要完成?

是否确定只是初始化/启动演员系统,离开它是(即忽略调用stopshutdown完全?为什么/为什么不呢?

回答

1

是的,这是确定的,这是类似的一个问题到AkkaHTTP的实现。在AkkaHTTP中,你开始演员打开一个套接字并等待请求。

我想到一个可能的问题:如果你需要一些短期生活的演员(在你的长期服务中)来处理单一的请求,你应该停止他们不再需要(免费资源),特别是如果演员是有状态的。

我写了一篇关于该问题的博客文章:https://mikulskibartosz.name/always-stop-unused-akka-actors-a2ceeb1ed41