消息传递模式
点对点、发布订阅;对照 kafka/rabbitmq 课。
35 分钟
消息传递模式
消息中间件不只是「发一条 JSON」——点对点、发布订阅、请求-回复 等模式决定谁能收到、收到几次、失败怎么办。本课建立 EIP 词汇,细节实现见 Kafka / RabbitMQ 两个 track。
学习目标
- 区分 Point-to-Point 与 Publish-Subscribe
- 理解 Message Channel、Router、Dead Letter 直觉
- 对照 kafka-concepts 与 rmq-exchanges
点对点(Point-to-Point)
[Producer] ──► [Queue / Topic 单消费组] ──► 恰好一个 Consumer 处理
│
Worker1 ◄─┘(竞争消费,一条消息只被一个 Worker ack)
Worker2
RabbitMQ:一个 Queue + 多 Consumer(rmq-publish)。
Kafka:同一 consumer group 内 分区独占消费(kafka-consumer)。
用途:任务队列、订单导出、削峰填谷。
发布订阅(Publish-Subscribe)
[Producer] ──► [Topic / Fanout Exchange]
├──► [通知服务] (Group A)
├──► [统计服务] (Group B)
└──► [搜索索引] (Group C)
同一条 OrderCreated 事件,多个下游各自独立消费。Kafka 天然多 consumer group;RabbitMQ 用 fanout / topic exchange。
用途:领域事件广播、读模型投影(ip-event-driven)。
常见消息结构
| 字段 | 作用 |
|---|---|
messageId | 去重、追踪 |
correlationId | 关联请求链 |
timestamp | 排序、延迟监控 |
payload | 业务体(JSON / Avro) |
kafka-schema 讲 Schema 演进;rmq-reliability 讲 ack、重投与 DLQ。
Kafka vs RabbitMQ(本课视角)
| 维度 | RabbitMQ | Kafka |
|---|---|---|
| 模型 | Queue + Exchange | 分区日志 |
| 回溯 | 消费即删(默认) |