IDDD 8 DomainEvent 发表于 2014-07-31 | 分类于 Art << 实现领域驱动设计 >> 八: 领域事件用于捕获发生在领域内,领域专家所关心的一些事情 MindMapping Source (Org Format):123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051* 领域事件 用于捕获发生在领域内,领域专家所关心的一些事情** 何时/为什么使用?*** 当。。。的时候。。*** 通用语言的正式成员** 建模*** 创建具有聚合特征的**** 发生在过去的事情**** 应设计成不变的,但拥有唯一标识*** 身份标识**** 方便比较**** 需要发布在外部限界上下文时,唯一标识是必要的** 发布*** 从领域模型中发布**** 观察者模式***** 发送方 由聚合创建,并发布出去***** 订阅方 由应用/领域服务,向领域事件注册订阅 与聚合位于相同线程内*** 向远程限界上下文发布**** 消息设施的一致性 最终一致性***** 领域模型和消息设施,共享持久化存储***** 领域模型的持久化存储和消息持久化存储,由全局XA事务(两段提交)所控制***** 领域模型的持久化存储中,创建特殊的存储区域,即事件存储**** 自治服务和系统***** 通过领域事件,将任何系统设计成自治服务和系统***** 避免远程过程调用(RPC)**** 容许时延 长时间的事件延迟有可能发生** 事件存储*** 作为消息队列使用,将所有领域事件发布出去*** 基于REST的事件通知*** 跟踪bug*** 业务分析和预测*** 重建聚合*** 撤销操作** (向外部)转发存储事件的架构风格*** 发布事件通知**** 以REST资源的方式***** “拉”的方式,非“推”的方式***** 不能很好支持有顺序的接收**** 通过消息中间件** 实现*** 发布NotifiactionLog*** 发布基于消息的事件通知**** 事件消重***** 幂等操作 进行多次重复操作和只进行一次操作所产生的结果相同.