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

从Akka.net持久性日志重播事件,akka,persistence,cqrs,event-sourcing,akka.net,Akka,Persistence,Cqrs,Event Sourcing,Akka.net,我正在用Akka.Net和Akka.Net.Persistence用SQL Server日志实现一个CQRS/ES解决方案。到目前为止,使用默认的SQLServer插件似乎一切都很好 最后要验证的是能够从特定AR重新加载/重播事件的能力,例如重建读取模型或填充读取模型的新实现投影。我的方法是从de DB读取事件,并将它们放在eventbus上或直接放在“projection actor”的邮箱中 我似乎找不到任何手动重新加载事件的例子,除了自己查询日志表(执行sql查询)和使用内置序列化程序之外

我正在用Akka.Net和Akka.Net.Persistence用SQL Server日志实现一个CQRS/ES解决方案。到目前为止,使用默认的SQLServer插件似乎一切都很好

最后要验证的是能够从特定AR重新加载/重播事件的能力,例如重建读取模型或填充读取模型的新实现投影。我的方法是从de DB读取事件,并将它们放在eventbus上或直接放在“projection actor”的邮箱中

我似乎找不到任何手动重新加载事件的例子,除了自己查询日志表(执行sql查询)和使用内置序列化程序之外,我基本上一直在使用这个


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

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

  • 使用-它是一个专用的参与者,它与一些特定的持久参与者相关,并且它能够接收它的事件以从中构建一些不同的状态。它是只读的优点:它不断更新由peristent actor生成的事件(不过更新之间会有一些延迟)缺点:它与单个参与者相关,不能用于聚合其中许多参与者的事件
  • 使用日志查询(仅限SQL日志)-它允许您使用某些特定筛选器查询日志优点:它可以跨多个聚合使用缺点:它不会自动更新,您需要发送后续查询以获取更新。我不确定它是否有官方文档,但流本身是被描述的

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

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

  • 使用-它是一个专用的参与者,它与一些特定的持久参与者相关,并且它能够接收它的事件以从中构建一些不同的状态。它是只读的优点:它不断更新由peristent actor生成的事件(不过更新之间会有一些延迟)缺点:它与单个参与者相关,不能用于聚合其中许多参与者的事件
  • 使用日志查询(仅限SQL日志)-它允许您使用某些特定筛选器查询日志优点:它可以跨多个聚合使用缺点:它不会自动更新,您需要发送后续查询以获取更新。我不确定它是否有官方文档,但流本身是被描述的

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

    谢谢您的回复!PersistentView绝对不是我想要的。我现在设置读取模型投影的方式是在EventStream上发布事件。projection actor路由器正在订阅EventStream上的事件。这个设置似乎工作得很好。我试图解释的问题是,何时需要一个新的读取模型(和投影),何时需要重建读取模型。在我们自己的自定义事件存储中,我们只需从事件存储加载所需的事件,并将它们放在队列中进行重新处理。此外,为什么不使用Akka.Persistence.Common.Sql中的默认序列化程序呢?当然,在我的场景中,使用我们自己的序列化程序来持久化事件会更方便。存储对象比通过线路尽可能快地发送对象具有不同的特性。但主要原因是默认序列化程序可能(而且很可能)在将来的Akka.NET版本中更改。在sql server持久性中插入自己的事件序列化程序的最简单方法是什么?基于sql的插件使用默认序列化机制。您可以在中阅读更多信息。感谢您的回复!PersistentView绝对不是我想要的。我现在设置读取模型投影的方式是在EventStream上发布事件。projection actor路由器正在订阅EventStream上的事件。这个设置似乎工作得很好。我试图解释的问题是,何时需要一个新的读取模型(和投影),何时需要重建读取模型。在我们自己的自定义事件存储中,我们只需从事件存储加载所需的事件,并将它们放在队列中进行重新处理。此外,为什么不使用Akka.Persistence.Common.Sql中的默认序列化程序呢?当然,在我的场景中,使用我们自己的序列化程序来持久化事件会更方便。存储对象比通过线路尽可能快地发送对象具有不同的特性。但主要原因是默认序列化程序可能(而且很可能)在将来的Akka.NET版本中更改。在sql server持久性中插入自己的事件序列化程序的最简单方法是什么?基于sql的插件使用默认序列化机制。你可以在网站上阅读更多关于它的信息。