我有一个关于 CQRS 和 DDD 的简单场景,但我无法找到实现它的正确方法:
Order 和 Buyer 是 Ordering 服务中的两个聚合根。当用户签出购物篮时:
在(篮子)服务中引发集成事件。
它在 Ordering 服务中的处理程序被调用。
在这个处理程序中,创建并分派了一个 CreateOrderCommand。
命令处理程序实例化一个“订单”。
结果,引发了域事件“OrderStartedDomainEvent”。
在它的处理程序内部,必须应用与其他聚合(例如买方)有关的副作用:买方被实例化(如果不存在)。
所以,在这种情况下,我想改变订单状态。更改订单状态需要命令。我应该在哪里发送这个命令?从我目前阅读的内容来看,在domain event handler中创建和调度命令是不合适的。
另外,如果我需要在这里引发域事件,我该怎么做?由于可能不会调用 Buyer 构造函数(如果它已经存在)。那么在域事件处理程序中引发域事件是否正确?
我搜索了很多,但以前的答案对我来说太复杂了。如果有人澄清,我将不胜感激。提前致谢。