2015-08-25 55 views
1

我需要保留一個ActorRef一個確定的時間。雖然這個我一直在觀看這個ActorRef。如果我沒有收到DeadLetter消息,是否有可能發生ActorRef更改?

由於某種原因,出於某種原因,我的ActorRef變爲無效,而沒有收到「DeadLetter」,可能嗎?

對不起,如果這個問題看起來很奇怪。我認爲這是不可能的,但尋找一個文件這個問題對我來說並不清楚。

+0

只是爲了澄清 - 你的意思是終止消息,而不是DeadLetter? – Quizzie

+0

@Quizzie,寫了一個「DeadLetter」,看到「終止」消息! = D –

+0

好吧,我編輯了你的問題。 – Quizzie

回答

2

我認爲你是對的 - 似乎文檔含糊其詞。但是,請考慮以下事項:

Akka不爲消息傳遞提供任何傳遞保證。這是阿卡哲學的核心。

考慮你正在使用遠程死亡監視的情況。即使遠程Actor被終止並且Terminated消息通過網絡發送給您,您可能也不會收到消息,或者它可能會延遲到達。

在這種情況下,您將有一個陳舊的ActorRef,但如果您訂閱了「死信」,當您向其發送消息時,您將能夠發現問題。如果您在本地監視某個Actor並獲取某種類型的JVM錯誤 - 也有可能您不會收到Terminated消息或無法處理該消息,它將會丟失。

爲了解釋它,你可以在Akka之上構建恢復和重試。

所以總之有一些罕見的情況下,這可能是可能的。要問的正確問題是您的應用程序如何在各個失敗級別恢復。希望有所幫助。

相關問題