我正在从事 DDD 项目,目前我专注于两个有界上下文,Orders和Warehouse。
让我困惑的是以下情况:订单跟踪所有已下订单,仓库跟踪所有可用库存。如果用户为某个产品项目下一个订单,那将意味着该产品在仓库中少一件。我过于简化了这个过程,所以请多多包涵。
由于两个域模型被放置在不同的 BC 中,我目前依赖于最终的一致性,即。一件商品售出后,最终会从仓库中取出。
不幸的是,这种情况会导致问题场景,即另一个用户可以同时对同一项目进行另一个订单,并且在最终一致性启动之前它会显示为可用。这是领域专家无法接受的。
所以IMO我有两个选择
- 将订单和仓库(至少是关于产品库存、仓库中可用单位的部分)合并到一个 BC
- 让订单 BC(或微服务,如果您愿意)依赖于 Warehouse BC(微服务),以便提取可用的实时产品单元
哪个选项实际上遵循 DDD 模式?还有其他出路吗?