我正在建立一个与DDD和事件采购,CQRS的电子商务。我的理想是在一个微服务中分离每个AR。
在我的AR ShoppingCart中,我需要一个带有productId和价格的VO项目,因为价格在添加到购物车后不会改变。
我有另一个控制价格的AR产品。
我的问题是,由于我使用的是事件架构,如何在没有对产品的同步请求的情况下从AR产品获得价格?
发布于 2018-10-16 20:23:25
从根本上说,您要做的是将信息从一个聚合根复制到另一个聚合根。
您可以采用两种方法。
一种是从缓存的角度考虑--我们向购物车传递一个知道如何获取相关id (产品代码?)的域服务的实例。并获得一个价格的缓存副本。因此,我们有一个后台进程,它将价格信息从定价微服务复制到购物车微服务,然后自主购物车依赖于其本地缓存的价格副本。
重要提示:在缓存中包含时间性元数据并没有错,以便锐化购物车可以包含有关缓存的信息是否“太旧”的情报。
另一种更直接-有一种方法,您可以通过该方法向购物车发送带有价格的命令,并构建一些编排逻辑来观察哪些购物车需要价格,然后向购物车发送带有适当价格的命令。
发布于 2018-10-17 01:35:29
如果您有两个微服务,则可以让每个微服务发布一个事件流。您的ShoppingCart微服务可以使用来自您的产品微服务的PriceChanged事件,并维护每个产品的最新价格的本地缓存。当您将产品添加到ShoppingCart时,您将引用本地价格缓存。
这种将监听事件作为一种通信手段的相同方法从聚合间扩展到边界间上下文或微服务间,甚至系统间。根据您对价格变化的敏感度,您可能必须使用所描述的其他方法,但我假设您对最终的一致性有一定的容忍度,因为您在CQRS+ES模式中的选择。
https://stackoverflow.com/questions/52833643
复制相似问题