Java 如果我没有收到死信消息,是否可能进行更改?

Java 如果我没有收到死信消息,是否可能进行更改?,java,scala,akka,actor,Java,Scala,Akka,Actor,我需要在一段确定的时间内保留一个ActorRef。在这期间,我一直在“关注”这位演员 有没有可能,由于某种原因,我的ActorRef在没有收到“死信”的情况下变得无效 抱歉,如果这个问题看起来很奇怪。我认为这是不可能的,但是寻找一份文档这个问题对我来说并不清楚。我认为你是对的-似乎文档在这方面是模糊的。但是,考虑一下: Akka不提供任何消息传递保证。这是阿克卡哲学的核心 考虑一下使用远程死亡观察的情况。即使远程参与者被终止,并且终止消息通过网络发送给您,您也可能得不到消息,或者消息可能延迟到达

我需要在一段确定的时间内保留一个ActorRef。在这期间,我一直在“关注”这位演员

有没有可能,由于某种原因,我的ActorRef在没有收到“死信”的情况下变得无效


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

我认为你是对的-似乎文档在这方面是模糊的。但是,考虑一下:

Akka不提供任何消息传递保证。这是阿克卡哲学的核心

考虑一下使用远程死亡观察的情况。即使远程参与者被终止,并且
终止
消息通过网络发送给您,您也可能得不到消息,或者消息可能延迟到达

在这种情况下,您将有一个过时的
ActorRef
,但如果您订阅了“死信”,则在向它发送消息时,您将能够发现它的问题。如果您在本地监视一个参与者,并得到某种JVM错误,则同样适用-您可能不会收到
终止的消息,或者无法处理该消息,并且该消息将丢失

考虑到这一点,您可以在Akka之上构建恢复和重试


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

只是想澄清一下-你是指终止的消息而不是死信吗?@Quizzie,写了“死信”的地方见“终止的”消息=杜克,我编辑了你的问题。