2011-12-16 4 views
1

This earlier questionは、監督者のアクタで「停止」を呼び出すと、リンクされたすべてのアクタがシャットダウンすることが示唆されています。しかし、(工場ではなく)「カスタム」アクターを作成すると、この自動シャットダウンは起こらないようです。例えば、another questionへの回答から、このコードを参照してください:「ストップ」が上記Module1の俳優で呼び出された場合はリンクされたすべてのアクタをシャットダウンするカスタムAkkaスーパーバイザを作成する

class Module1 extends Actor { 
    self.faultHandler = OneForOneStrategy(List(classOf[Throwable]), 5, 5000) 

    def receive = { 
     case Register(actor) => 
      self.link(actor) 
    } 
} 

、それにリンクされている俳優がシャットダウンされません。カスタムアクタが自動的にリンクされたアクタをシャットダウンする方法はありますか?または、カスタムアクタを作成したい場合は、これを作成するだけです。

ありがとうございます!

答えて

2

「self.linkedActors.values.iterator」を呼び出してPoisonPillを送信するか、またはstop()することができます。

+0

が気難しい気分です:postStop()はこのコードを置くのに最適な場所です;-) –

+0

AkkaのソースコードのSupervisorActorクラスのコードを見ました。だから、そのコードをコピーして、SupervisorActorから自分のカスタムスーパーバイザクラスに貼り付けることができました。コピー&ペーストコーディングよりも良い方法があるのか​​どうか疑問に思っていました。カスタム監督者にコピー&ペーストする必要がある他の行動はありますか?クラッシュした子アクターを再起動する機能と同じですか? – bnsmith

+0

いいえ、そうでなければなりません。ただし、2.0-M1以降で手動で行う必要はありません。 –

関連する問題