RabbitMQ vs Kafka 简单总结
text
RabbitMQ:适合"派任务"
Kafka:适合"记事件流水账"
RabbitMQ 像什么?
像老板派活:
text
订单创建
↓
派任务:扣库存
↓
派任务:发短信
↓
派任务:超时取消订单
特点:
text
消息进 Queue
消费者消费
ACK 后消息一般删除
适合:
text
发短信
发邮件
订单超时取消
异步下单
失败重试
延迟任务
业务解耦
核心概念:
text
Exchange
Queue
RoutingKey
Binding
Consumer
ACK
Kafka 像什么?
像记流水账:
text
10:00 订单创建
10:01 库存扣减
10:02 支付成功
10:03 Agent 生成限购决策
特点:
text
消息写入 Topic
进入 Partition
消费者按 Offset 读取
消息消费后还会保留一段时间
适合:
text
订单事件流
库存事件流
用户行为日志
风控事件
数据分析
Python Agent 异步分析
多系统订阅同一批事件
核心概念:
text
Topic
Partition
Offset
Consumer Group
Producer
Consumer
核心区别表
| 对比 | RabbitMQ | Kafka |
|---|---|---|
| 本质 | 消息队列 | 事件流平台 |
| 像什么 | 派任务 | 记流水账 |
| 消息消费后 | 通常删除 | 保留一段时间 |
| 多系统重复读 | 不方便 | 很方便 |
| 历史消息重放 | 不方便 | 很方便 |
| 顺序性 | 单队列单消费者较好保证 | 同一 Partition 内有序 |
| 高吞吐事件流 | 可以但不是最优 | 很适合 |
| 延迟任务 | 很适合 | 不如 RabbitMQ 自然 |
项目怎么用?
text
Java 高并发秒杀事件 → Kafka → Python 多 Agent 分析
例如:
text
订单创建事件
库存扣减事件
支付成功事件
商品爆单事件
风控异常事件
这些适合 Kafka。
text
订单超时取消
短信通知
邮件通知
失败重试
库存回补任务
这些适合 RabbitMQ。
总结
text
RabbitMQ = 让某个服务去干一件事。
Kafka = 把发生过的事记录下来,让很多服务都能看。