akka.net - 在 AKKA.NET 中查询

标签 akka.net

我试图在使用 AKKA.NET 构建的目录管理应用程序中了解 CQRS 的查询端。我有一个 UI,它需要在遵循标准的网格中显示所有产品。条件可以是来自供应商 A 的所有产品,并且在 UI 上的表单中输入此条件。

我的问题是这个查询是如何完成的?我应该去哪里运行查询?我是否应该将所有产品参与者加载到内存中以进行查询?或者我应该去保存状态的持久媒体?在我获得查询成功的所有产品 ID 后,我应该使用这些产品 ID 来激活所有参与者吗?

请指教。

最佳答案

你的问题听起来不像严格的 Actor 相关,因为它更像是 CQRS 与 CRUD 特征。在标准的 CQRS 场景中,您希望拥有某种持久存储,其架构根据您的读取模型进行调整。然后你可以在它上面运行你的查询。

在基于 CQRS 但 中使用 Akka.NET 时想到的一件事还没有事件溯源场景,是利用 Akka 事件总线。当您启动应用程序时,创建负责更新读取模型的参与者,并立即将它们订阅到 Akka 事件总线以监听消息,这表示必须更新读取模型。然后在任何可能引发读取端更改的参与者中,发布相关的事件/消息。

如果您正在使用事件溯源,您可能想看看 Akka.Peristence .在那里你有一个由所谓的持久参与者创建的事件日志的概念。它描述了一个参与者所做的所有操作的流,这些操作应该已经被存储。第二件事是另一种称为持久 View 的参与者,它可能与特定的事件流相关联并从中构建读取模型。虽然持久 View 通常与单个持久参与者相关联,但您可以再次使用事件总线 + 监听器来创建全局读取模型。这种方法的优点之一是所有事件都存储在持久存储中,使您的系统更耐用,并且在发生故障时更容易恢复。

关于akka.net - 在 AKKA.NET 中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158835/

相关文章:

dependency-injection - Windows 服务和最佳实践上的 Akka.NET DI

akka.net actor并行执行

具有远程节点 : Disassociated exception 的 Akka (.net) 集群

c# - 如何使用 ReceiveAsync 测试 Akka.NET actor 中的异步异常

scala - AKKA 中失败消息的重试/重放

c# - 在 akka.net actor 中使用 async/await 是否安全

c# - Akka.net/Generics and Database & Entity Framework

akka.net - 如何限制Akka.net系统的内存消耗?

c# - 在 Akka.NET 的 Actor 内部或外部放置代理的 websocket 客户端在哪里?

c# - 传递上下文信息