持久性的唯一性在akka-persistence中

时间:2014-08-14 09:27:54

标签: scala akka akka-persistence

我使用scala api进行akka-persistence来持久化一组组织成树的actor实例。树中的每个节点都是持久性actor,并根据来自“root”的节点的路径命名。节点。 persistenceId设置为名称。例如,根节点actor具有persistenceId' root'。下一个节点有persistenceId' root-europe'。另一个演员可能会有持久性的“根 - 欧洲 - 意大利'

。”

每个参与者的状态包括其子女的名字列表。例如。 ' root'演员保留了一份欧洲'亚洲'等作为其国家的一部分。

我已为此系统实施了快照。当root被触发为快照时,它会这样做,然后告诉每个孩子也这样做。

快照恢复期间出现问题。当我用persistenceId =' root'重新创建一个actor时(通过将名称作为构造函数参数传递),该actor接收的SnapshotOffer事件是错误的。例如,它是“root-europe-italy ....”#。这似乎是持久性合同的矛盾,其中persistenceId标识要恢复的actor状态。我通过逆转节点actor的persistenceId(例如' italy-europe-root')解决了这个问题,所以这似乎与持久性检索文件的方式有关模块。请注意,我首先尝试了其他方法,例如,我在节点名称之间使用了各种分隔符,或者根本没有使用分隔符。

是否有其他人遇到此问题,或者akka-persistence开发人员是否可以帮助我理解为什么会发生这种情况?

BTW:我现在正在使用内置的基于文件的快照存储。

感谢。

1 个答案:

答案 0 :(得分:3)

好的 - 问题出在Akka身上,现在已经解决了。请参阅related ticket以了解修补程序的发布时间。