12

我想使用 akka-persistence 事件溯源功能,以便在我的新项目中实现 CRQS + 事件溯源理念。问题是除了文档(http://doc.akka.io/docs/akka/snapshot/scala/persistence.html)之外,我找不到任何好的示例或指南如何处理它。该文档很好地解释了架构的所有构建块,如处理器、视图、通道,但没有解释如何将它们组合在一起。

所以问题是:我应该如何将写入模型与 akka-persistence 中的读取模型连接起来?我想出了三个选择:

  • 直接连接EventsourcedProcessor -> View,View直接从日志中接收所有事件。这似乎是最简单的解决方案,但我想知道我们是否可以使用这种方法在不同的节点上分配处理器和视图。

  • EventsourcedProcessor -> 频道 -> 视图/普通 Actor。与第一个选项有什么区别?如果这是正确的解决方案,为什么我们在 akka-persistence 构建块中有视图?我应该使用 Channels 还是 PersistentChannels ?

  • EventsourcedProcessor -> 某种事件总线(例如 context.system.eventStream) -> Views/Actors。

最好的方法是什么,为什么?

4

4 回答 4

4

EventsourcedProcessor -> View 是这样做的方法。视图从日志中回放,因此在将视图放置在另一台机器上时需要分布式日志。期刊实现列表可以在这里找到:http: //akka.io/community/

于 2014-03-18T15:01:37.243 回答
4

我还发现很难找到任何关于如何处理 Akka 持久性和事件溯源的好例子。因此,我使用 Dropwizard 和 Akka Persistence 创建了这个示例应用程序,akka-persistence-java-example

此示例使用PersistenceActor写入数据,使用PersistenceQuery读取数据。

于 2016-01-04T20:18:13.407 回答
0

虽然我认为阅读 EP 的日志是恢复/重建视图的好方法,但它似乎是在轮询日志(akka.persistence.view.auto-update-interval)。如果想要同步更新读取模型(有人建议这可能是读取模型的一个很好的起点),这将是不合适的。我会建议(并且喜欢自己使用)该期刊进行恢复,但有某种用于现场活动的 pub-sub 架构。我知道这可能很难,但这似乎是正确的做法。但是,我没有足够的知识来建议如何使用 Akka Persistence 或其他库进行分布式 pub-sub,甚至无法确定这样做是否真的可行。

作为替代方案,是否可以在他们关注的期刊更新时通知视图?

于 2014-05-04T06:02:05.030 回答
0

关于这个话题的讨论真的很好。我只是粘贴结论帖子https://groups.google.com/forum/#!topic/akka-user/MNDc9cVG1To。希望它可以帮助读者登陆这篇文章。

于 2014-08-28T09:10:08.133 回答