在暂停时发送给演员的消息会发生什么变化?

时间:2017-07-03 09:18:31

标签: akka actor akka-supervision

情况如此,我的演员(A)由退避监督员(B)监督。

我感兴趣的事件顺序如下:

  1. 系统启动,每个人都很开心
  2. 处理消息时失败
  3. B现在认为A暂停,直到退避延迟过去
  4. B收到一些他打算转发给A
  5. 的消息(MM)
  6. 退避延迟elaspes和B重新启动A
  7. 每个人都很开心
  8. 在第4步,这些消息会发生什么?

    他们迷路了吗?发送到死信?在某处隐藏在B内部,并在重启/恢复时发送给A?

    现在让我们添加另一层:A不是标准的Actor,而是带Stash的Actor。

    A失败与重启/恢复之间的信息存在会发生什么? 丢弃了吗?它是不是被扼杀了?它藏在藏匿处吗?

1 个答案:

答案 0 :(得分:1)

经过几次实验后,我想我可以回答上述两个问题:

在演员失败的那一刻和重新启动的那一刻,发送给由Backoff主管监督的演员的消息会发生什么?

他们被发送到deadLetters()

演员失败与重启之间的短信会发生什么?

在实际尝试重启之前,存储没有任何反应。重新启动过程开始时,存储的preRestart()步骤调用unstashAll()以将所有邮件返回到邮箱。因此,邮件不会丢失,也不会保存在存储中,而只是取消存储并返回邮箱。