gpt4 book ai didi

akka - 需要 DB 调用的 CQRS 命令验证

转载 作者:行者123 更新时间:2023-12-04 23:00:39 24 4
gpt4 key购买 nike

在 CQRS 中,验证需要 DB 调用的命令的最佳方法是什么?
例如,我有 Order正在验证命令的聚合说 CommitOrder除非有足够的库存,否则我不想接受这个命令。
在这种情况下,命令处理程序如何检查我是否有订单商品的库存?我可以从写入端查询读取端吗?

注意:我使用 akka 来实现

最佳答案

如果聚合需要查询读取模型来执行规则验证,那么通常的方法是通过域服务——你向服务传递一个指定查询合约的接口(interface),该合约的实现运行询问。

但是您需要注意这样一个事实,即您通过运行查询得到的答案是旧的;不能假定存储在另一个聚合中的数据是“最新的”。

您还应该仔细检查您的要求;在许多领域,即使当前没有库存,也希望接受订单。毕竟,订单是增加商业值(value)的机会;您不想因不相关的问题而否决。当企业已经了解如何缓解“缺货”异常时尤其如此。

请记住,来自其他聚合的数据是陈旧的——完全有可能系统的另一部分当前正在更新库存水平,以便您可以接受订单。

如果您不能放宽在没有库存时提交订单的要求,并且如果使用陈旧查询数据的错误率高得无法接受,那么您需要重新设计您的聚合,以使当前的库存水平保持相同的一致性边界作为订单提交。

关于akka - 需要 DB 调用的 CQRS 命令验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39429967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com