Appearance
Day 22 - 消息队列与DDD
📖 今日目标
- 理解消息队列在DDD中的作用
- 掌握领域事件与消息队列的集成
- 学习异步处理模式
核心概念
消息队列与DDD
消息队列是DDD中实现跨限界上下文通信的重要手段,主要用于:
- 发布领域事件
- 解耦上下文
- 实现最终一致性
关键要点
1. 事件发布
java
public class Order {
public void place() {
// 业务逻辑...
DomainEventPublisher.publish(new OrderPlacedEvent(orderId, ...));
}
}
// 消息队列消费者
@MessageListener
public class handleOrderPlaced(OrderPlacedEvent event) {
// 处理事件
}2. 消息模式
| 模式 | 说明 |
|---|---|
| Point-to-Point | 点对点队列 |
| Pub/Sub | 发布订阅 |
| Event Bus | 事件总线 |
3. 最终一致性
跨上下文操作时,使用消息队列实现最终一致性:
- 执行本地上下文操作
- 发布事件到消息队列
- 下游上下文订阅并处理
面试考点
问题:DDD中什么时候适合使用消息队列?
答案:
- 跨限界上下文通信:上下文间需要异步交互
- 解耦:发送方不需要知道接收方
- 高并发:削峰填谷
- 最终一致性:可以接受短暂不一致
不适合:需要强一致性的场景
实践思考
🎯 思考题:
设计订单完成后触发库存扣减的异步流程。
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-21 | 战略设计 + 战术 + 架构 | ✅ |
| 22 | 消息队列与DDD | ✅ |
| 23 | 聚合设计原则 | ⬜ |
| ... | ... | ... |
| 30 | 复习与总结 | ⬜ |
