2014-07-17 44 views
3

我的应用程序需要记录演员处理的所有消息,并有时在minSequenceNrmaxSequenceNr之间重播消息。Akka持久性 - 强制重播

对于这种用例,akka-persistence是否有用?如果是,我该如何强制从日记中重放信息?我可以使用Persistence(actorSystem).journalFor("x")来获得日记的ActorRef,但我无法发送JournalProtocol.ReplayMessages,因为JournalProtocol对于akka.persistence是私人的。

回答

4

这个问题被问和回答了阿卡用户已经:https://groups.google.com/forum/#!topic/akka-user/AJjdIt_bztM

在阿卡2.3.x版本(很老的版本)

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

我们不支持范围内(如在“从200到400”的回放),跳过事件(“从N”)不符合事件源的哲学。

另一方面,您可以轻松地发出“400”重播,并且只需在您的演员中选择忽略seqNr低于200的任何事件,即可获得与之相同的最终结果。

在阿卡的2.4.x

阿卡持久性,因为在2.4进入稳定版不允许随机重播在你的一生的中间。我们发现它造成了更多的错误,而不是让人们受益。请阅读http://doc.akka.io/docs/akka/2.4.5/scala/persistence.html

我希望这可以帮助,快乐的徒步!

+0

这似乎不再有效吗? – ixaxaar

+0

正确,它自Akka 2.4到来后已经过时 - 不允许在你有生之年随机回放。我们发现它造成了更多的错误,而不是让人们受益。请阅读http://doc.akka.io/docs/akka/2.4.5/scala/persistence.html –