akka - 使用 akka-persistence 实现 CQRS + 事件溯源

标签 akka cqrs event-sourcing akka-persistence

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

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

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

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

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

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

最佳答案

EventsourcedProcessor -> View 就是实现这一点的方法。 View 从日志中重播,因此将 View 放置在另一台计算机上时需要分布式日志。日志实现列表可以在这里找到:http://akka.io/community/

关于akka - 使用 akka-persistence 实现 CQRS + 事件溯源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22475481/

相关文章:

java - 将 Akka PoisonPill 连接到 actor 系统和 JVM 关闭 Hook

scala - 在Slick 3.0中,为什么新引入的 `Streaming`有用?

cqrs - 自动扩展 Axon 的跟踪事件处理器

c# - 应用 CQRS - 是否需要对薄读取层进行单元测试?

.net - NEventStore乐观锁

akka - 在 Akka 中,如果我 watch() 一个死的 ActorRef 会发生什么?

java - 如何在 Java 代码中等待 scala Future

nservicebus - 处理 EventStore 中并发异常的正确方法是什么?

architecture - 如何正确处理事件溯源中的聚合关系?

java - Axon - 在查询时进行投影的最简单方法