- 6
- 0
- 约2.58万字
- 约 50页
- 2022-03-21 发布于浙江
- 举报
?
?
领域驱动设计实现疑难解答
如何发布领域事件
?
?
事件驱动可能是客观世界的运作方式,当你点击鼠标、敲击键盘或者插上U盘时,计算机便以中断的形式处理各种外部事件。可见,“事件”这个概念一直在计算机科学领域中扮演着重要的角色。
考虑实际应用,我们经常发现一个用例需要修改多个聚合根的情况,并且不同的聚合根还处于不同的限界上下文中。比如,当你在电商网站上买了东西之后,你的积分会相应增加。这里的购买行为可能被建模为一个订单(Order)对象,而积分可以建模成账户(Account)对象的某个属性,订单和账户均为聚合根,并且分别属于订单系统和账户系统。显然,我们需要在订单和积分之间维护数据一致性,通常的做法是在同一个事务中同时更新两者,意味着要调用不同包里的应用,这会存在不同系统中的耦合性问题。
为遵循原则,一个业务用例对应一个事务,一个事务对应一个聚合根,也即在一次事务中,只能对一个聚合根进行操作。通过引入领域事件,我们可以很好地解决上述问题。
这时候的解决方法,称为基于事件的最终一致性。
注意:不能同时更新多个聚合根,并不是不能同时更新多个数据表。
一、如何定义领域事件?
(一)找出事件
可以通过事件风暴活动找出领域事件,领域事件是用来捕获领域中发生的具有业务价值的一些事情,是领域专家所关心的(需要跟踪的、希望被通知的、会引起其他模型对象改变状态的)发生在领域中的一些事情,
原创力文档

文档评论(0)