|
Akka/Scala example source code file (DeadLetterListener.scala)
The DeadLetterListener.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.event import akka.actor.Actor import akka.actor.DeadLetter import akka.event.Logging.Info class DeadLetterListener extends Actor { val eventStream = context.system.eventStream val maxCount = context.system.settings.LogDeadLetters var count = 0 override def preStart(): Unit = eventStream.subscribe(self, classOf[DeadLetter]) // don't re-subscribe, skip call to preStart override def postRestart(reason: Throwable): Unit = () // don't remove subscription, skip call to postStop, no children to stop override def preRestart(reason: Throwable, message: Option[Any]): Unit = () override def postStop(): Unit = eventStream.unsubscribe(self) def receive = { case DeadLetter(message, snd, rcp) ⇒ count += 1 val done = maxCount != Int.MaxValue && count >= maxCount val doneMsg = if (done) ", no more dead letters will be logged" else "" eventStream.publish(Info(rcp.path.toString, rcp.getClass, s"Message [${message.getClass.getName}] from $snd to $rcp was not delivered. [$count] dead letters encountered$doneMsg. " + "This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' " + "and 'akka.log-dead-letters-during-shutdown'.")) if (done) context.stop(self) } } Other Akka source code examplesHere is a short list of links related to this Akka DeadLetterListener.scala source code file: |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.