如何查看akka死信

Jam*_*ies 14 scala dead-letter akka

我已经创建了一个执行一些基本操作的Actor并且看起来工作正常 - 但是我看到我的日志定期显示以下内容

[INFO] [05/28/2014 14:24:00.673] [application-akka.actor.default-dispatcher-5] [akka://application/deadLetters] Message [akka.actor.Status$Failure] from Actor[akka://application/user/trigger_worker_supervisor#-2119432352] to Actor[akka://application/deadLetters] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
Run Code Online (Sandbox Code Playgroud)

我想实际查看失败的内容,以确定究竟是什么抛出一个Failure,但是我无法弄清楚如何查看它们.

通过阅读Akka文档,它提到了如何在日志中禁用死信警告,而不是如何实际编写处理程序来处理它们.

有没有一种简单的方法来实际捕获任何发送到死信的东西?

cmb*_*ter 23

正如@wingedsubmariner的评论中所提到的,您可以订阅DeadLetter主系统上的事件,EventStream以便在发生紧急情况时得到通知,并能够以更自定义的方式对该情况做出反应.为了订阅,代码看起来像这样:

context.system.eventStream.subscribe(myListenerActorRef, classOf[DeadLetter])
Run Code Online (Sandbox Code Playgroud)

然后,该侦听器actor的接收可能如下所示:

def receive = {
  case DeadLetter(msg, from, to) =>
    //Do my custom stuff here
}
Run Code Online (Sandbox Code Playgroud)

DeadLetter该类的结构是:

case class DeadLetter(message: Any, sender: ActorRef, recipient: ActorRef)
Run Code Online (Sandbox Code Playgroud)