处理 Akka Typed 中的死亡演员

Handling dead actors in Akka Typed

我有一些演员在闲置或其他系统限制要求他们自杀时自杀。对他们有 ActorRefs 的演员正在监视他们的 Terminated(ref),但是在终止到达之前发送给演员的消息存在竞争条件,我正在尝试找出一个干净的处理方法。

我正在考虑订阅 DeadLetter 并使用它来通知发件人他们的 ref 已经过时,他们需要获取或生成一个新目标 ActorRef

但是,在 Akka Typed 中,除了使用非类型化共存路径之外,我找不到任何方法来获取死信,所以我认为我可能是在接近这个错误。

是否有更好的模式来处理无效的下游引用并将消息重定向到新的下游引用,而不需要对每条消息进行某种确认握手?

将死信视为一种调试工具,而不是用来实现交付保证的工具(对于 Akka 类型和非类型类型都是如此)。

如果参与者需要确定消息已传递,则消息协议将需要包含一个确认。要重新发送 actor 还需要为 in-flight/not 保留一个缓冲区,但确认消息才能重新发送。

我们对消息传递的不同可靠性级别的抽象有一些想法,我们将看看它是否适合 Akka 2.6 或稍后发生,原型在:https://github.com/akka/akka/pull/25099