如果我没有收到 DeadLetter 消息,是否可能更改 ActorRef?

Is possible a ActorRef change without I receive a DeadLetter message?

我需要将 ActorRef 保留一段确定的时间。虽然我为这个 ActorRef.

保留了 "watching"

有没有可能,由于某种原因,我的 ActorRef 变为无效,而我没有收到 "DeadLetter" ?

抱歉,如果这个问题看起来很奇怪。我认为那是不可能的,但是寻找文档这个问题对我来说并不清楚。

我认为你是对的 - 文档似乎对此含糊不清。但是,考虑一下:

Akka 不提供任何消息传送保证。这就是 Akka 哲学的核心。

考虑一下您使用远程死亡监视的情况。即使远程 Actor 终止并且 Terminated 消息通过网络发送给您,您也可能收不到消息,或者它可能延迟到达。

在这种情况下,您将有一个陈旧的 ActorRef,但如果您订阅 "Dead Letters",您可以在向它发送消息时发现它的问题。如果您在本地监视一个 Actor 并遇到某种 JVM 错误,这同样适用 - 有可能您不会收到 Terminated 消息或无法处理它并且它将会丢失。

为了解决这个问题,您可以在 Akka 之上构建恢复和重试。

简而言之,在一些罕见的情况下,这是可能的。正确的问题是您的应用程序如何在每个级别的故障中恢复。希望对您有所帮助。