我正在着手实施一个使用 CQRS 的项目,并打算使用 J Oliver EventStore V2.0 作为我的事件持久性引擎。
1) 在文档中,ExampleUsage.cs 在“BuildSerializer”中使用了 3 个序列化器。我想这只是为了展示反序列化过程的灵活性?
2)在“失败后重新启动”的情况下,某些事件没有被调度,我相信我需要调用 GetUndispatchedCommits() 然后调度它们的启动代码,对吗?
3) 同样,在“ExampleUseage.cs”中,如果“TakeSnapshot”将第三个事件添加到事件存储中,然后“LoadFromSnapShotForward”不仅检索最近的快照,而且检索快照后的事件以模拟重建一个聚合体。
4) 我没有看到保留旧快照的用途。你能给出一个有用的用例吗?
5) 如果我有一个服务正在处理命令的接收和事件的生成,那么建议的策略是跟踪自给定聚合的最后一个快照以来的事件数量。我当然不想太频繁地调用“GetStreamsToSnapshot”。
6) 在 SqlPersistence.SqlDialects 命名空间中,sql 语句名称是“GetStreamsRequiringSnaphots”而不是“GetStreamsRequiringSnapShots”