首页 文章

使用akka-persistence的CQRS Event Sourcing实现

提问于
浏览
11

我想使用akka-persistence事件采购功能,以便在我的新项目中实现CRQS事件采购理念 . 问题是,除了文档(http://doc.akka.io/docs/akka/snapshot/scala/persistence.html),我找不到任何好的示例或指南如何处理它 . 该文档在解释体系结构的所有构建块(如处理器,视图,通道)方面非常出色,但没有解释如何将它们组合在一起 .

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

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

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

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

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

4 回答

  • 4

    Eventsourcedrocessor - > View就是这样做的 . 视图从日志中重放,因此在将视图放在另一台计算机上时需要一个分布式日志 . 期刊实施清单可在此处找到:http://akka.io/community/

  • 0

    这个主题真的很好讨论 . 我只是在https://groups.google.com/forum/#!topic/akka-user/MNDc9cVG1To之后粘贴结论 . 希望它能帮助读者登陆这篇文章 .

  • 0

    我还发现很难找到关于如何处理Akka Persistence和Event Sourcing的任何好例子 . 因此我使用Dropwizard和Akka Persistence创建了这个示例应用程序,akka-persistence-java-example

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

  • 4

    虽然我认为从EP的期刊阅读是一种恢复/重建视图的好方法,但似乎是在查看期刊(akka.persistence.view.auto-update-interval) . 如果想要读取模型的同步更新(某些人建议它可能是读取模型的良好起点),这将是不合适的 . 我会建议(并且喜欢自己使用)日志进行恢复,但是对于直播活动有一些pub-sub架构 . 我知道这可能非常困难,但这似乎是正确的做法 . 但是,我不知道如何使用Akka Persistence或其他库建议如何使用分布式pub-sub,或者甚至确定它是否真的可行 .

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

相关问题