Kafka 是分布式提交日志,适合高吞吐事件流、日志管道、回放和流处理;RabbitMQ 是传统消息代理,适合任务队列、请求响应、复杂路由和低延迟投递。不要把两者都当成“消息队列”随便替换。
| 维度 | Kafka | RabbitMQ |
|---|---|---|
| 模型 | 分区日志,消费者按 offset 读取 | 队列 + 交换机 + 绑定 |
| 路由 | 按 topic/partition | direct/topic/fanout/headers |
| 吞吐 | 很高,适合批量事件 | 高,但更偏消息投递 |
| 保留 | 按时间/大小保留,可回放 | 消费后删除,默认不保留 |
| 顺序 | 分区内有序 | 单队列有序,取决于消费模型 |
| 确认 | 消费者提交 offset | ack/nack + prefetch |
| 生态 | Connect、Streams、ksqlDB | 管理插件、多语言客户端 |
| 典型场景 | 日志、事件溯源、数据管道 | 任务队列、RPC、业务消息 |
kafka-topics --bootstrap-server broker:9092 --describe --topic events
rabbitmqctl list_queues -p /app name messages consumers
kafka-topics / kcat — Kafkarabbitmq / rabbitmqctl — RabbitMQnats / pulsar — 其他消息系统