2017-03-15 108 views

回答

0

  • 接收超時邏輯與調度ReceiveTimeout消息實現每當由演員,接收到的消息所指定的超時
  • 之後發送其檢查的NotInfluenceReceiveTimeout標記

    • 如果消息不包含NotInfluenceReceiveTimeout標記,則排定的ReceiveTimeout被取消,並且重新安排新的
    • 否則,調度消息被原封不動
  • 隨後處理該消息 - 不管NotInfluenceReceiveTimeout標記。如果在此調用setReceiveTimeout,則即使對於NotInfluenceReceiveTimeout消息也是有效的。

查看源代碼(herehere)以獲取更多信息。

+0

我問了原來的問題,因爲我在我的代碼中遇到了一個特殊情況,即使我調用了setReceiveTimeout有限的持續時間並且沒有後續的取消,也沒有觸發超時。在審查代碼[這裏](https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/dungeon/ReceiveTimeout.scala)不是32行錯誤?如果郵箱中的所有郵件都實現了'NotInfluenceReceiveTimeout',該怎麼辦?這不會導致錯誤的提前退出嗎? – agauci