Kafka 与 RabbitMQ 的差异与选择

结论先行

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

相关命令