Skip to content

Day 10 - 领域事件(Domain Event)

📖 今日目标

  1. 理解领域事件(Domain Event)的概念
  2. 掌握领域事件的设计和实现
  3. 学习事件驱动架构的应用

核心概念

什么是领域事件?

领域事件(Domain Event) 是表示领域中已发生的事实的事件。它使用过去式命名,表示业务中发生的业务事实。

关键要点

1. 领域事件的组成

java
public class OrderPlacedEvent {
    private final OrderId orderId;
    private final CustomerId customerId;
    private final Money totalAmount;
    private final DateTime occurredAt;
    
    // 元数据
    private final String eventId;
    private final int version;
}

2. 领域事件的使用场景

  • 解耦限界上下文
  • 维护一致性
  • 触发下游业务流程

3. 事件发布

java
public class Order extends AggregateRoot {
    
    public void place() {
        // 业务逻辑...
        
        // 发布领域事件
        DomainEventPublisher.publish(
            new OrderPlacedEvent(orderId, customerId, totalAmount)
        );
    }
}

面试考点

问题:领域事件和消息队列有什么区别?

答案:

  1. 关注点不同

    • 领域事件:业务事实,描述"发生了什么"
    • 消息队列:技术实现,描述"如何传递"
  2. 用途不同

    • 领域事件:触发业务逻辑、保持一致性
    • 消息队列:异步通信、系统解耦
  3. 关系

    • 领域事件可以通过消息队列传递
    • 但领域事件首先是业务概念

实践思考

🎯 思考题

在电商系统中,列出至少5个领域事件,并说明触发场景。


📅 学习进度

Day主题状态
01-09战略设计 + 战术基础
10领域事件(Domain Event)
11仓储模式(Repository)
.........
30复习与总结

本文为DDD 30天学习计划第10天内容

📚 导航

| ← Day 09 - 上一章 | Day 11 - 下一章 →

最后更新: