跨业务域事件驱动架构中,领域事件、集成事件和消息事件的语义差异及治理边界是什么
旗舰版来源:alibaba资深工程师领域事件与集成事件区分事件驱动架构治理领域驱动设计CQRS
草稿
答案解析
在跨业务域的事件驱动架构里,我一般会把领域事件、集成事件和消息事件分成三个层次来看,它们解决的问题不一样,治理边界也不一样。
领域事件 是领域模型内部发生的、对业务有意义的事实,比如“订单已支付”“库存已锁定”“客户已完成实名认证”。它的语义来自领域语言,通常发生在某个限界上下文内部,由聚合在状态变更后产生。领域事件关注的是业务事实,而不是通知谁、怎么投递。
它的治理边界一般在 单个业务域或限界上下文内部 。领域事件可以被本域内的应用服务、领域服务或本地订阅者消费,用来解耦领域逻辑,比如订单支付后触发生成履约单。它不应该直接暴露给其他业务域作为外部契约,因为领域模型会随着业务演进变化,如果外部系统直接依赖内部领域事件,就会造成跨域耦合。
集成事件 是面向其他业务域或外部系统发布的事件,是跨上下文协作的契约。它通常由领域事件转换而来,比如内部有一个“PaymentSucceeded”领域事件,对外发布成“OrderPaidIntegrationEvent”。集成事件强调的是系统间协作语义,字段会更稳定、更偏契约化,避免暴露内部聚合结构和实现细节。
它的治理边界在
登录后查看完整内容
