RabbitMQ、RocketMQ 与 Pulsar 对比:业务消息队列怎么选

RabbitMQ、RocketMQ、Pulsar 都能处理消息,但它们的设计重心不同:路由、业务消息、云原生分层架构分别是关键词。

RabbitMQ、RocketMQ 与 Pulsar 对比:业务消息队列怎么选

Kafka 经常用于日志和事件流,但业务系统里还有很多场景更关心路由、延迟消息、事务消息、重试和死信。RabbitMQ、RocketMQ、Pulsar 就经常出现在这些讨论里。

Rendering diagram...

RabbitMQ

RabbitMQ 基于 AMQP 模型,核心能力是 Exchange、Queue、Binding。生产者把消息发到 Exchange,Exchange 根据路由规则投递到 Queue。

常见 Exchange 类型包括 direct、fanout、topic、headers。这个模型让 RabbitMQ 在复杂路由、任务分发、传统企业消息场景里很自然。

RabbitMQ 适合:

  • 复杂路由。
  • 工作队列。
  • RPC 风格异步任务。
  • 中小规模业务消息。
  • 需要成熟管理界面的系统。

RocketMQ

RocketMQ 更偏业务消息。它支持普通消息、顺序消息、延迟消息、事务消息等能力,在订单、支付、库存、履约这类场景里很常见。

事务消息是 RocketMQ 的特色能力之一。它通过半消息和事务回查,帮助业务在本地事务和消息发送之间实现最终一致。

RocketMQ 适合:

  • 订单和支付链路。
  • 事务消息。
  • 延迟消息。
  • 顺序消息。
  • 大规模业务消息。

Pulsar

Pulsar 的特点是计算和存储分离。Broker 负责服务请求,BookKeeper 负责持久化存储。这种架构让它在多租户、跨地域、海量 Topic 和云原生场景里有吸引力。

Pulsar 还支持多种订阅模式,比如 exclusive、shared、failover、key_shared,用来适配不同消费语义。

Pulsar 适合:

  • 多租户消息平台。
  • 大量 Topic。
  • 跨地域复制。
  • 存算分离架构。
  • 云原生消息服务。

对比表

维度RabbitMQRocketMQPulsar
核心气质路由灵活业务消息云原生多租户
典型模型Exchange + QueueTopic + QueueTopic + Subscription
事务消息不作为核心特色强项可通过模式组合实现
延迟消息插件/机制支持强项支持延迟投递
适合场景企业消息、任务队列订单、支付、业务事件多租户消息平台
运维关注Queue 堆积、内存、水位Topic、消费组、重试Broker、BookKeeper、租户

怎么选

如果核心需求是复杂路由和传统消息模型,RabbitMQ 很合适。

如果核心需求是业务消息、事务消息、延迟消息,RocketMQ 更贴近。

如果要做平台型、多租户、云原生消息服务,可以重点看 Pulsar。

小结

没有一种消息队列适合所有场景。选型时不要只看吞吐,要看业务语义、团队经验、失败处理、运维能力和生态工具。

参考链接