我有一個主管,使用默認的Play創建子進程! 2.2 Akka.system
。當我試圖瞬間殺死主管時,沒有任何反應,並且一直處理。爲什麼Akka Kill不會終止這位主管及其子女?
class ImportSupervisor extends Actor {
import akka.actor.AllForOneStrategy
import akka.actor.SupervisorStrategy._
import scala.concurrent.duration._
val log = Logging(context.system, this)
override val supervisorStrategy =
AllForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 hour) {
case e: Exception => Stop
}
override def preStart() {
Logger.info("supervisor starting up at "+self.toString)
}
def receive = {
case p: Props => context.actorOf(p)
}
}
下面是我使用的殺擁有大約1000名兒童主管代碼:
Akka.system.actorSelection("akka://application/user/"+actorName) ! Kill
我可以確認我收到ActorPath正確的,但問題是Kill
不會立即生效。我試過Stop
。我究竟做錯了什麼?假設它會立即關閉是錯誤的嗎?
通過設計,阿卡從來沒有保證什麼會,甚至是特定的延遲後執行「立即」。例如,當在「2秒」內安排要執行的任務時,您不應該認爲它會在2秒內有效運行。 – vptheron 2014-09-23 18:08:20