2017-01-01 25 views
1

私はシミュレーションを行い、データを返すアクターを持っています。私はシミュレーションを複数回実行できるようにしたいので、各アクタの内部状態をリセットする必要があります。アクカアクターを初期状態にリセットする

アクターの内部状態をリセットして、作成時と同じ状態にするにはどうすればよいですか?

+0

なぜ「使用」しないのですか?ネット上にはたくさんの例があります – zella

答えて

0

を手動で自分でresetと呼ばれるメッセージと再初期化し、すべての俳優の状態をリセットするハンドル

マニュアルそれを行うには二つの方法があります。

ここでは、リセット文字列メッセージを処理し、アクタの状態をリセットするコードサンプルを示します。

第二の方法をリセット

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

自動俳優に例外をスローし、俳優を殺すことです。この場合、akkaのデフォルト監督者戦略は、最初の空の状態でアクターを再起動します。

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

関連する問題