【发布时间】:2020-06-16 20:32:40
【问题描述】:
我从事电子商务应用。我使用带有 ddd 的微服务。我有产品服务。它存储标题描述等。定价服务存储产品价格和促销。类别服务商店类别和产品类别。 Shipment service store所有关于发货数据和产品发货细节的dweight cargo公司isFreeCargo等。
我不想使用组合模式进行搜索。我创建了存储所有服务数据的搜索服务。价格、产品信息、发货信息、类别信息等。 我将所有数据与事件连接起来。像 cQRS 因此,所有服务都通过事件相互通信。
我的问题是; 当 CreateProductRequest 来到产品服务。它包括 categoryId、price、shippingFirm 等。我的意思不仅仅是产品服务信息。 我只在产品服务中保存标题描述等。产品服务中没有价格或类别等数据。因为他们不属于这个域。当产品创建和事件引发 productCreatedEvent 包含创建的产品 id 和其他服务信息时带有 request.price ,类别等。
其他服务监听这个事件。并消费。定价保存 productId 和 price。 Cagegory 保存 productId 和 categoryId ...
搜索服务也消费事件。但是没有关于价格或类别的数据,因为它们刚刚发布。 Okey 我可以在价格变化或类别保存后证明与事件的一致性。但起初可能不会有 2-3 秒的价格或类别。 如何立即保存搜索服务的类别和价格。因为 productCreatedEvent 中没有价格和类别的非规范化和计算数据。只有 categoryId 之类的参考 Id 或未计算的价格。在自己的服务保存和发布 ProductCategoryUpdated 或 ProductPriceCaculeted 等事件后,它们将存在于搜索服务中
.
【问题讨论】:
标签: events domain-driven-design microservices e-commerce ddd-service