重播 Akka.net 持久性日志中的事件

Replay events from Akka.net Persistence Journal

我正在使用 Akka.Net 和 Akka.Net 实施 CQRS/ES 解决方案。使用 SQL 服务器日志进行持久化。到目前为止,默认的 sql-server 插件似乎一切正常。

最后要验证的是能够 reload/replay 来自特定 AR 的事件的能力,例如重建读取模型或为读取模型填充新实现的投影。我要解决这个问题的方法是从 de DB 读取事件并将它们放在事件总线上或直接放入 "projection actor".

的邮箱中

我似乎找不到任何手动重新加载事件的示例,除了自己查询日志 table(执行 sql 查询)和使用内置序列化程序外,我基本上被卡住了有了这个。

有没有人或多或少地尝试做同样的事情?

根据您的需要,有以下几种方法:

  1. 使用 PersistentView - 它是一个专用的 actor,与某些特定的持久性 actor 相关联,并且它能够接收它的事件以从中构建一些不同的状态。它是只读的。 优点:它使自己与持久性 actor 产生的事件保持同步(但是更新之间存在一些延迟)。 缺点:它与单个参与者相关,不能用于聚合来自多个参与者的事件。
  2. 使用日记查询(SQL 仅限日记)- 它允许您使用某些特定过滤器查询日记。 优点:它可以跨多个聚合使用。 缺点:它不会自动保持最新,您需要发送后续查询以获取更新。我不确定,如果它有官方文档,但流程本身被描述 here.

PS:一些日志实现有自己专用的序列化器,但没有基于 SQL 的序列化器。相信我,您永远不想依赖默认序列化程序来持久化事件。