首页 文章

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

提问于
浏览
6

我正在使用scala api for akka-persistence来持久化一组组织成树的actor实例 . 树中的每个节点都是持久性actor,并根据“根”节点到该节点的路径命名 . persistenceId设置为名称 . 例如,根节点actor具有persistenceId'root' . 下一个节点有persistenceId'root-europe' . 另一个演员可能有persistenceId'root-europe-italy' .

每个参与者的状态包括其子女的名字列表 . 例如 . 'root'演员将“欧洲”,“亚洲”等列表作为其州的一部分 .

我已经为这个系统实现了快照 . 当根被触发为快照时,它会这样做,然后告诉每个孩子也这样做 .

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

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

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

谢谢 .

1 回答

  • 3

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

相关问题