Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

Akkaのアクターの生死を検出する

Akkaでのアクターは、か弱くてすぐに死ぬことが前提の存在なので、死んだ事を検出してやらないといけない場面というものがある。

Actorが死んだ(エラーを吐いたか自殺したか)ことを検出するにはcontext.watchTerminatedとを使う。ActorRefを入手した時点でそのActorRefを引数にしてcontext.watchを呼び出す。watchしたアクターが終了するとwatchした側のActorにTerminated(actorRef: ActorRef)がメッセージパッシングされるのでそれを拾えばよい。

class ParentActor extends Actor {
  val aref = context.actorOf(ChildActor.props())
  context.watch(aref)

  def receive = {
    case Terminated(deadman) => println("Actor has been dead")
  }
}
★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?