【发布时间】:2020-02-04 05:48:34
【问题描述】:
不知道你能不能帮忙。我正在编写一个订单系统,目前已经实现了一个负责下订单的订单微服务。我正在使用带有事件溯源和 CQRS 的 DDD。
订单服务本身接受产生事件的命令,实际的订单服务监听自己的事件以创建读取模型(这里的想法是使用CQRS,因此命令用于写入和查询用于读取)
执行上述操作后,我遇到了一个问题,可能只是我没有完全理解这样做的正确方法。
订单实际上有依赖项,这意味着订单需要客户和产品。因此,我将为客户和产品提供 2 个额外的微服务。
为了简单起见,我想专注于客户(虽然我对产品也有完全相同的问题,但我的想法是,如果我解决了客户问题,那么另一个问题也会自动解决)。
回到手头的问题。要创建订单需要客户(和产品),我目前在客户端上有 customerId,因此向订单服务发送命令,我可以传入 customerId。
我想在订单中保存客户的姓名和地址。如何从 Order Service 中的 Customer Service 获取 customerId 的名称和地址?
我想总结一下,当一个服务的数据需要另一个服务的数据时,我如何才能获得这些数据。
订单服务是否会创建一个接收客户记录的事件?这将在系统中引入很多复杂性(更多事件)
微服务不耦合,因此订单服务不能只调用客户的读取模型。
谁能帮我解决这个问题?
【问题讨论】:
-
当您说“我想在订单中保存客户的姓名和地址”时,假设您在谈论
Order的查询/阅读模型是否正确?跨度> -
是的,那是正确的
标签: domain-driven-design microservices cqrs event-sourcing