Petabridge博客的 Akka.Persistence 介绍清楚地表明,您不能有多个具有相同 PersistenceId 的演员:
该
PersistenceId
字段很重要——它唯一地标识了一个使用 Akka.Persistence 持久化其状态的实体,并且在任何给定时间对于单个PersistenceId
.[...] 所以想象一下,如果您有两个具有相同 PersistenceId 但序列号不同的演员写入同一个商店。这将是混乱的,并且不可避免地会出错 - 这就是为什么每个 PersistenceId 在您的 ActorSystem 中都是全球唯一的至关重要的原因(至少对于所有写入该商店的演员来说)。
我可以想到一个场景,您将有两个独立的参与者:一个负责将持久性状态保存到数据库(即调用Persist()
),另一个负责在手动请求时重播来自日志的消息(即调用Recover()
)。读取和写入操作将由不同的参与者进行。只有一个人写过,也只有一个人读过。但是,两者都需要相同的 PersistenceId。
我相信在这种情况下,让两个参与者使用相同的 PersistenceId 应该是安全的。但是鉴于上面引用的上述警告,有什么理由说明这种方法在实践中可能是危险的?