3

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

akka-persistence 对这个用例有用吗?如果是,如何强制重播日志中的消息?我可以Persistence(actorSystem).journalFor("x")用来获取期刊的 ActorRef 但我不能发送JournalProtocol.ReplayMessages给它,因为它JournalProtocol是私有的akka.persistence

4

1 回答 1

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 上

自 2.4 进入稳定版本以来,Akka Persistence 不允许在您的生命中期随机重播。我们发现它导致的错误多于对人们的好处。请阅读http://doc.akka.io/docs/akka/2.4.5/scala/persistence.html

我希望这会有所帮助,快乐哈克!

于 2014-07-17T13:10:46.337 回答