如果akka演员由于某些原因而失败,该如何恢复消息?

时间:2019-03-26 10:42:11

标签: akka akka-cluster akka-persistence

我想解决两种情况:

  1. 我有一个发送方Actor和一个接收方Actor,发送方actor如何知道接收方actor没有响应。终止案例可以用来获取通知,但是延迟是多少? 终止的邮件的响应时间。我什至都不会错过任何一条消息。
  2. 如何恢复已终止的actor的邮箱中当前的邮件?

2 个答案:

答案 0 :(得分:2)

您将需要开发自己的协议,以确认消息以及消息已被处理,然后重试尚未处理的消息。参见:

https://doc.akka.io/docs/akka/current/general/message-delivery-reliability.html

  

始终有可能在基本功能之上增加更强的可靠性   ,但无法追溯性地删除   为了获得更高的性能。

答案 1 :(得分:0)

请注意,自从提出这个问题以来,Akka 2.6 就引入了(尽管 API 可能会发生变化)对 reliable delivery 的选择支持。当与持久生产者(即定义唯一持久性 ID 并将消息写入持久存储的生产者)结合使用时,这可以保证发送的消息最终会被传递,但代价是吞吐量显着降低(和/或大量持久性费用)。< /p>