全书目录

第二十一篇:RabbitMQ 完全指南 —— 城市智能快递调度中心宇宙

第十一章:RabbitMQ 与 Kafka 的根本差异,不在“谁更强”,而在“城建设计不同”

2 分钟 672 字 第 393 / 962 个阅读单元

很多争论一开始就错了,因为拿两种不同城市设施硬比。

RabbitMQ 和 Kafka 都能传消息,但它们默认回答的问题不一样。

维度 RabbitMQ Kafka
核心心智 智能任务调度中心 可回放事件日志干线
默认关注点 把消息路由给谁处理 把事件按顺序写入并长期保留
消费语义直觉 处理完成后确认,消息可从队列移除 事件保留在日志中,消费者自己推进 offset
路由能力 强,exchange/binding 很灵活 相对简单,主要按 topic/partition
典型用途 异步任务、命令分发、工作队列、RPC、复杂路由 事件流、数据管道、审计、重放、流处理
多消费者模型 同一队列通常竞争消费 不同 consumer group 可独立重复消费同一事件流
长期回放 不是经典 queue/exchange 模型的强项 是默认核心能力
典型感觉 “这件活谁来做?” “这件事发生过什么?”

一句话压缩:

text
RabbitMQ 更像“分拣派单”
Kafka 更像“城市总账流水”

所以如果你的问题是:

  • “给某个工人派活”
  • “失败要重试”
  • “不同标签派给不同系统”
  • “一个任务只需要一个 worker 做完”

RabbitMQ 很自然。

如果你的问题是:

  • “我要保留半年事件流”
  • “多个团队各自独立回放”
  • “做实时分析和离线重算”
  • “需要事件日志作为系统事实来源”

Kafka 更自然。

要特别注意一个边界:

本篇说的是 RabbitMQ 最常见的 queue/exchange 心智。RabbitMQ 也有 Streams,但工程上大多数人说 RabbitMQ,默认还是在说这种‘消息队列 + 路由分发’模型。