我在电子商务应用程序上工作。我使用带有 ddd 的微服务。我有产品服务。它存储标题描述等。定价服务存储产品价格和促销。类别服务商店类别和产品类别。装运服务存储所有关于装运数据和产品装运细节的货物运输公司 isFreeCargo 等。
我不想使用组合模式进行搜索。我创建了存储所有服务数据的搜索服务。定价、产品信息、发货信息、类别信息等。我将所有数据与事件联系起来。就像 cQRS 一样,所有服务都通过事件相互通信。
我的问题是;当 CreateProductRequest 来到产品服务。它包括 categoryId、price、shippingFirm 等。我的意思不仅仅是产品服务信息。我只在产品服务中保存标题描述等。产品服务中没有价格或类别等数据。因为他们不属于这个域。当产品创建和事件引发 productCreatedEvent 包括创建的产品 id 和其他服务信息时, request.price , category 等。
其他服务监听这个事件。并消费。定价保存 productId 和 price。Cagegory 保存 productId 和 categoryId ...
搜索服务也消费事件。但是没有关于价格或类别的数据,因为它们刚刚发布。Okey 我可以在价格变化或类别保存后证明与事件的一致性。但起初可能不会有 2-3 秒的价格或类别。如何立即保存搜索服务的类别和价格。因为 productCreatedEvent 中没有价格和类别非规范化和计算数据。只有 categoryId 之类的参考 Id 或未计算价格。在自己的服务保存和发布 ProductCategoryUpdated 或 ProductPriceCaculeted 等事件后,它们将存在于搜索服务上
.