How to view akka dead letters

ぐ巨炮叔叔 提交于 2019-12-20 12:34:39

问题


I've created an Actor that performs some basic operations and appears to be working correctly - however I'm seeing the following show up in my logs regularly

[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'.

I would like to actually view the contents of the Failure to establish what exactly is throwing a Failure, however I can't quite figure out how to view them.

Reading through the Akka documentation it mentions how to disable the dead-letter warning in the logs, but not how to actually write a handler to process them.

Is there a simple way to actually catch anything sent to dead-letters?


回答1:


As mentioned in the comment by @wingedsubmariner, you can subscribe to the DeadLetter event on the main system EventStream to be notified when deadletters happen and be able to react to that situation in a more custom manner. In order to subscribe, the code would look like this:

context.system.eventStream.subscribe(myListenerActorRef, classOf[DeadLetter])

Then, the receive for that listener actor could look something like this:

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

The structure of the DeadLetter class is:

case class DeadLetter(message: Any, sender: ActorRef, recipient: ActorRef)


来源:https://stackoverflow.com/questions/23902900/how-to-view-akka-dead-letters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!