Akka Persistence - 强制重播

时间:2014-07-17 12:15:28

标签: scala akka event-sourcing akka-persistence

我的应用程序需要记录演员处理的所有邮件,并有时在minSequenceNrmaxSequenceNr之间重播邮件。

akka-persistence对这个用例有好处吗?如果是,我如何强制从日志重播消息?我可以使用Persistence(actorSystem).journalFor("x")来获取期刊的ActorRef,但我无法发送JournalProtocol.ReplayMessages,因为JournalProtocolakka.persistence的私有。

1 个答案:

答案 0 :(得分:4)

此问题已在akka-user上提出并回答:https://groups.google.com/forum/#!topic/akka-user/AJjdIt_bztM

在Akka 2.3.x(非常旧的版本)

您是否阅读过有关恢复的文档http://doc.akka.io/docs/akka/2.3.4/scala/persistence.html#recovery? 您可以通过向自己发送Recover(toSequenceNr:Long)消息来开始恢复。

我们不支持范围(如“从200到400”)回放,跳过事件(“来自N”)与事件采购理念不相符。

另一方面,您可以轻松发出重播“至400”,只需在您的演员中选择忽略seqNr低于200的任何事件, 这取得了你所追求的最终结果。

在Akka 2.4.x上

Akka Persistence自2.4进入稳定版本后,不允许在你的生命中间随机重播。我们发现它造成了更多的错误而不是对人们有益。请阅读http://doc.akka.io/docs/akka/2.4.5/scala/persistence.html

我希望这会有所帮助,快乐的开玩笑!