选型

RabbitMQ

你可能会说

消息队列不是 Kafka 就行了吗?

成熟的消息代理,重路由和可靠投递支持复杂路由、优先级、延迟和死信;吞吐不如 Kafka,但单条消息的可控性更强,业务解耦很常见。
也常被叫作AMQP消息队列
先问一句要复杂路由和可靠投递?
默认RabbitMQ→擅长路由 + 确认→别用海量日志流
成熟度采用

什么时候选它

  • 业务解耦、任务队列、延迟与重试消息
  • 需要复杂路由、优先级、死信队列
  • 消息量中等、要求低延迟

什么时候别选

  • 日志 / 埋点级别的高吞吐流(Kafka / Pulsar)
  • 需要长期保留并回放历史消息
  • 团队不愿维护 Erlang 集群
容易混在一起 · 怎么分
RabbitMQ≠Kafka

RabbitMQ 适合业务消息和复杂路由;Kafka 适合高吞吐事件流、日志和可回放的数据管道。

Q面试会问什么

  • 问:怎么保证不丢?
    答:生产者 confirm + 队列和消息持久化 + 消费者手动 ack,三处都做到才不丢。
  • 问:和 Kafka 的区别?
    答:RabbitMQ 推模型、消费后删除、路由灵活;Kafka 拉模型、分区顺序、可回放。
延伸阅读 · 权威出处