持久性的唯一性在阿卡
我使用scala api来实现akka-persistence来坚持一组组成树的actor实例。 树中的每个节点都是一个持久性参与者,并且根据从“根”节点到该节点的路径命名。 persistenceId被设置为名称。 例如,根节点actor具有persistenceId'root'。 下一个节点有persistenceId'root-europe'。 另一位演员可能会持续坚持'根欧洲意大利'。
每个演员的状态包括其子女姓名的列表。 例如,“根”演员在其状态中包含“欧洲”,“亚洲”等列表。
我已经为这个系统实现了快照。 当根被触发为快照时,它会这样做,然后告诉每个孩子都这样做。
快照恢复期间出现问题。 当我用persistenceId ='root'重新创建actor(通过传入名称作为构造函数参数)时,该actor所收到的SnapshotOffer事件是错误的。 例如,“根欧 - 意大利......”。 这似乎是持久性合同的矛盾,persistenceId标识了要恢复的actor状态。 我通过颠倒节点角色的persistenceId(例如'italy-europe-root')解决了这个问题,所以这似乎与持久性模块检索文件的方式有关。 请注意,我首先尝试了其他方法,例如我在节点名称之间使用了各种分隔符,或根本没有分隔符。
有没有其他人遇到过这个问题,或者一个持久性开发人员能帮助我理解为什么会发生这种情况?
顺便说一句:我现在正在使用内置的基于文件的快照存储。
谢谢。
好的 - 问题出在Akka身上,现在已经解决了。 查看相关故障单以了解补丁何时发布。
链接地址: http://www.djcxy.com/p/62781.html