Appearance
Day 10 - 领域事件(Domain Event)
📖 今日目标
- 理解领域事件(Domain Event)的概念
- 掌握领域事件的设计和实现
- 学习事件驱动架构的应用
核心概念
什么是领域事件?
领域事件(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)
);
}
}面试考点
问题:领域事件和消息队列有什么区别?
答案:
关注点不同:
- 领域事件:业务事实,描述"发生了什么"
- 消息队列:技术实现,描述"如何传递"
用途不同:
- 领域事件:触发业务逻辑、保持一致性
- 消息队列:异步通信、系统解耦
关系:
- 领域事件可以通过消息队列传递
- 但领域事件首先是业务概念
实践思考
🎯 思考题:
在电商系统中,列出至少5个领域事件,并说明触发场景。
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-09 | 战略设计 + 战术基础 | ✅ |
| 10 | 领域事件(Domain Event) | ✅ |
| 11 | 仓储模式(Repository) | ⬜ |
| ... | ... | ... |
| 30 | 复习与总结 | ⬜ |
