像 DeadLetterActorRef 一样挂钩

Hooking Akka DeadLetterActorRef

根据 Akka 文档,DeadLetterActorRef 是:

the default implementation of the dead letters service to which Akka routes all messages whose destinations are shut down or non-existent.

如果我想 "tap into" 在 actor 终止后发送死信,我是否只是以某种方式 "hook" 这个 DeadLetterActorRef 让它把它收到的所有东西都传给我?或者我将它子类化?或者我会做一些完全不同的事情吗?无论哪种方式,如何?

您可以在事件流中监听死信事件。像这样:

import akka.actor._

class DeadLetterListener extends Actor {
  override def preStart {
    context.system.eventStream.subscribe(self, classOf[DeadLetter])
  }

  override def postStop {
    context.system.eventStream.unsubscribe(self)
  }

  def receive = {
    case DeadLetter(msg, from, to) =>
      //handle the deadletter here
  }
}