【发布时间】:2021-12-11 00:54:48
【问题描述】:
我们将 akka-persistence 2.6.15 中的 EventSourcedBehavior 用于 CQRS/EventSourcing 应用程序,并使用 akka-persistence-jdbc 4.0.0 将事件和快照存储在 PostgreSQL 数据库中。
我们有通过快照序列化的状态类。但有时这些状态类会发生变化,这使得读取快照明显失败。我们通过删除那些更改的快照来管理它:
delete from snapshot sn
where sn.persistence_id::uuid in (select id from some_entity_table);
但是对于有很多事件的实体,在发送新命令时,需要很长时间才能到达最新的快照,导致超时。
是否可以在应用程序启动时强制重建快照?
【问题讨论】:
-
根据您的需要,您可以使用EventAdapter 或SerializerWithStringManifest 或两者的组合。
-
感谢您的建议。我们两者都使用,但事件(反)序列化正确,我们不想维护不同版本的快照。
SerializerWithStringManifest.fromBinary可以返回一个状态,也可以失败。我们只想废弃现有的快照并在需要时重建它们。
标签: scala cqrs snapshot event-sourcing akka-persistence