Quantcast
Viewing all articles
Browse latest Browse all 1367

Listening to Dead Letters in Akka-Typed 2.5

I’m using Akka-Typed 2.5 and have an intermittent race condition of sending a message to an actor that has shut down before I received the Terminated message. Since this is an edge case, I figured the simplest way is to listen to DeadLetters and handle the re-create/re-send from there. Since 2.5 doesn’t seem to have a typed event stream, I tried subscripting the classic way via:

      val untyped = context.system.toClassic
      val listener = untyped.actorOf(Props[DeadLetterListener])
      untyped.eventStream.subscribe(listener, classOf[DeadLetter])

However, that dies at untyped.actorOf(Props[DeadLetterListener]) with java.lang.UnsupportedOperationException: cannot create top-level actor from the outside on ActorSystem with custom user guardian.

Is there a different way to subscribe to deadletters in akka-typed 2.5?

I can’t easily upgrade to 2.6 because of a number of breaking changes, the main blocker being that behavior orElse Behaviors.receiveMessagePartial[T] no longer exists which I use extensively as a behavior wrapper for localized logging of Unhandled messages in state machines.

3 posts - 2 participants

Read full topic


Viewing all articles
Browse latest Browse all 1367

Trending Articles