2017-08-03 58 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