【发布时间】:2021-03-23 15:54:46
【问题描述】:
Petabridge blog's Akka.Persistence intro 明确表示您不能有多个具有相同 PersistenceId 的演员:
PersistenceId字段很重要 - 它唯一标识了一个使用 Akka.Persistence 持久化其状态的实体,并且在任何给定时间对于单个PersistenceId都应该只有一个持久化参与者。[...] 想象一下,如果您有两个具有相同 PersistenceId 但序列号不同的演员写入同一个商店。这将是混乱的,并且不可避免地会出错 - 这就是为什么每个 PersistenceId 在您的 ActorSystem 中都是全球唯一的至关重要的原因(至少对于写入该存储的所有演员而言)。
我可以想到一个场景,您将有两个单独的参与者:一个负责将持久性状态保存到数据库(即调用 Persist()),另一个在手动请求时重播来自日志的消息(即致电Recover())。读取和写入操作将由不同的参与者进行。只有一个人写过,也只有一个人读过。但是,两者都需要相同的 PersistenceId。
我相信在这种情况下,让两个参与者使用相同的 PersistenceId 应该是安全的。但是鉴于上面引用的上述警告,是否有任何理由说明这种方法在实践中可能是危险的?
【问题讨论】:
-
您可能想尝试 akka.net 谷歌组或 gitter 聊天频道 - 主要贡献者在那里非常活跃。你的描述对我来说听起来不错,但我不熟悉 akka.persistence 所以....
标签: akka.net akka.net-persistence