本文从性能、稳定性、功能三方面对比阿里云消息队列RabbitMQ版与开源RabbitMQ。

性能

项目 消息队列RabbitMQ版 开源RabbitMQ
集群TPS上限 无上限。消息队列RabbitMQ版采用集群分布式部署,无主架构,能够横向扩容、缩容集群规模。 有上限。受机器性能限制,扩容依赖升级机器硬件规格,且有上限。
单个Queue的TPS上限 无上限。消息队列RabbitMQ版支持单队列的横向扩展,性能上无并发限制,容量无上限。 有上限,单队列性能上限为单节点上限。
连接数 无上限。消息队列RabbitMQ版实例能承载的连接数可随集群规模扩大而增加,不受连接数增加的影响。 有上限。受机器性能限制,单机的连接数有上限,且无法扩容。
定时消息 秒级精确度、高性能、开箱即用。 使用复杂。

稳定性

项目 消息队列RabbitMQ版 开源RabbitMQ
海量消息堆积能力 海量消息堆积能力,高性能不受消息堆积影响。 抗堆积能力差,容易引发内存问题而导致宕机。
弹性能力 集群分布式无主架构,能够横向快速地扩缩容集群规模。 通过变更机器规格来扩容、缩容。
服务可用性 99.95%集群分布式高可用架构,多可用区高可用。 Erlang语言,运维靠经验摸索,且无法避免开源架构的稳定性痛点。
数据可靠性 数据三副本,不会影响TPS性能。 配置副本数变多会导致TPS下降。
巡检系统 自动发现并修复死锁、宕机等问题。 无。

功能

表 1. 综合特性
项目 消息队列RabbitMQ版 开源RabbitMQ
客户端SDK支持情况 支持开源所有语言和所有版本的SDK。 开源SDK。
定时消息 秒级精确度。兼容插件x-delayed-message用法和TTL两种使用方式。 通过插件或使用消息存活时间过期转移方式实现。
事务消息 不支持。 支持。
表 2. Exchange
项目 消息队列RabbitMQ版 开源RabbitMQ
Exchange类型 支持direct、fanout、headers、topic、x-delayed-message五种类型。 支持direct、fanout、headers、topic、x-delayed-message五种类型。
持久化 支持配置持久化与非持久化 支持配置持久化与非持久化
Auto Delete 支持。 支持。
Internal 支持。 支持。
Alternate exchange 不支持。 支持。
表 3. Queue
项目 消息队列RabbitMQ版 RabbitMQ
队列类型 无需配置,分布式高可用集群。 需配置。
  • Classic:经典镜像队列。
  • Quorum:仲裁队列。
节点 无需配置,服务免运维。 需配置,可选择节点。
是否持久化 支持持久化和非持久化。 支持持久化和非持久化。
Max length 无需配置,支持海量消息堆积。 需配置,防止消息堆积过多而引起的内存问题导致宕机。
Max length bytes
Max in memory length
Max in memory bytes
Delivery limit 无需配置,固定值,默认16次。消息重试机制,请参见消息重试 需配置。
Dead letter exchange 支持。 支持。
Dead letter routing key 支持。 支持。
Single active consumer 不支持。 支持。