akka - 我应该如何在 Akka 持久性中构建持久性参与者?

标签 akka akka-persistence

我应该如何在 Akka 持久化 (Eventsourcing/CQRS) 中构建我的 Actor?

  • 分层
  • 平行

  • 我的电子商务应用程序中有这些域对象
  • 用户 - 用户可以创建帐户
  • 商店 - 用户可以创建商店
  • 产品 - 用户可以将产品添加到它的商店
  • 购物车 - 用户可以将其他用户商店中的任何产品添加到购物车中。

  • 所以我的问题是我应该如何构建我的 Actors ?与电子商务领域模型相关的选择一个而不是另一个的优缺点是什么?

    akka actor structure

    最佳答案

    我认为你的问题更多地是关于你的聚合的边界。

    在任何情况下,聚合之间都不应该有层次结构。聚合应该彼此独立。没有父子关系。

    根据你的描述。有一个用户聚合可以创建商店并向其中添加产品。

    Store 可以是由 User 聚合启动的单独聚合。请注意,用户可以创建 Store 的事实并不意味着他们应该具有父/子关系。更多的是关于访问控制。商店是由用户创建的,只有该用户有权向其中添加产品。

    但是,Product 似乎是 Store 聚合内的一个实体。

    您的第四个示例“购物车 - 用户可以将其他用户商店中的任何产品添加到购物车”,揭示了完全不同的内容。你有两种用户。创建和管理商店的用户以及给定商店的消费者。它们不一样,应该以不同的方式建模。

    尝试对您的业务领域建模,而不要仅仅因为对象相似就尝试重用对象。

    关于akka - 我应该如何在 Akka 持久性中构建持久性参与者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064031/

    相关文章:

    akka - 需要 DB 调用的 CQRS 命令验证

    synchronization - Akka:两个 Actor 之间同步状态的正确模式

    scala - Akka持久性查询事件流和CQRS

    scala - 玩mongo枚举器意外停止

    scala - 为什么编译器找不到导入了 Implicits.global 的隐式 ExecutionContext?

    testing - 如何等待所有参与者在测试中处理他们的收件箱

    java - Akka java 永远不会关闭 ActorRef

    scala - 通过持久性ID查找actor

    cqrs - Axon Framework与Eventuate的比较

    scala - 使用 Scala 进行 Akka actors 单元测试