2017-01-01 72 views
1

我有演員進行模擬,然後發回數據。我希望能夠多次運行模擬,所以我需要重置每個演員的內部狀態。將Akka演員重置爲初始狀態

如何重置演員的內部狀態,以便它具有與創建演員時相同的狀態?

+0

爲什麼不使用'成爲'?網上有很多例子 – zella

回答

0

有兩種方法可以做到這

手動復位

處理一個被稱爲reset和消息手動自己重新初始化所有演員的狀態。

以下是處理重置字符串消息並重置參與者狀態的代碼示例。

class FooActor extends Actor { 
    var maybeBars: Option[ActorRef] = _ 
    def receive = { 
    case "foo" => println("foo") 
    case "reset" => maybeBars = _ 
    } 
} 

自動復位

第二種方式是拋出一個異常,在演員和殺演員。在這種情況下,阿卡默認管理員策略將重新啓動具有初始空狀態的參與者。

class FooActor extends Actor { 
    var maybeBars: Option[ActorRef] = _ 
    def receive = { 
    case "foo" => println("foo") 
    case "reset" => throw new Exception("reset") 
    } 
}