将Akka演员重置为初始状态

时间:2017-01-01 19:14:01

标签: scala akka state reset actor

我有演员进行模拟,然后发回数据。我希望能够多次运行模拟,所以我需要重置每个actor的内部状态。

如何重置actor的内部状态,以便它与我创建它时的状态相同?

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点

手动重置

处理名为reset的消息,并手动重新初始化所有actor状态。

以下是处理重置字符串消息并重置actor状态的代码示例。

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

自动重置

第二种方法是在actor中抛出异常并杀死actor。在这种情况下,akka默认管理程序策略将重新启动具有初始空状态的actor。

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