开源对比

更新时间:

云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的AMQP 0-9-1协议的消息产品,能够兼容开源RabbitMQ客户端,与开源RabbitMQ相比,能够解决各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。本文从云消息队列 RabbitMQ 版和开源RabbitMQ的功能、稳定性、性能、Exchange和Queue等几个方面入手,帮助您更好地了解云消息队列 RabbitMQ 版的能力。

关于云消息队列 RabbitMQ 版的更多信息,请参见产品优势

功能

项目

云消息队列 RabbitMQ 版

开源RabbitMQ

协议

AMQP 0-9-1

AMQP 0-9-1、AMQP 1.0、STOMP、MQTT、HTTP(S)、WebSockets。

客户端SDK支持情况

支持开源所有语言和所有版本的SDK。

开源SDK。

定时消息

秒级精确度。兼容插件x-delayed-message用法和TTL两种使用方式。更多信息,请参见延时消息

通过插件或使用消息存活时间过期转移方式实现。

事务消息

不支持。

支持。

顺序消息

不支持。

支持。

消息优先级

不支持。

支持。

消息重试机制

消息消费超过一定时间未响应会重新投递。超时时间和重试次数的详细解释,请参见消费重试策略

无消息重试机制。无法跳过有问题消息的消费处理,无法处理新生产的消息,从而会导致消息大量堆积引起内存问题,导致消息服务宕机。

用户名、密码

通过阿里云访问控制(RAM)的AccessKey和AccessKey Secret生成用户名和密码,详情请参见静态用户名密码管理

自定义用户名密码。

权限

阿里云访问控制(RAM)。授权规则,请参见使用RAM进行访问控制

开源控制台授权。

可观测能力:Dashboard

  • 指标丰富,维度可精确到Vhost、Exchange和Queue,便于您快速发现和定位问题。

  • 基于Prometheus+Grafana实现指标的采集和展示,开箱即用,开发成本低。

详细信息,请参见Dashboard

支持以下两种方案:

  • 方案一:通过Management UI能够获取丰富的指标,但需要自建指标存储及展示的系统。

  • 方案二:通过Prometheus+Grafana实现。

可观测能力:消息轨迹

  • 轨迹数据白屏化展示,消息完整的生命周期清晰可见,一目了然。

  • 提供强大的索引能力,可根据Queue、消息ID、消息处理耗时等完成不同维度的查询。

详细信息,请参见消息轨迹

消息轨迹信息以文本格式存储在服务器的log文件中,查询和定位问题效率较低。

服务和性能

项目

云消息队列 RabbitMQ 版

开源RabbitMQ

集群TPS上限

无上限。云消息队列 RabbitMQ 版采用集群分布式部署,无主架构,能够横向扩容、缩容集群规模。

有上限。受机器性能限制,扩容依赖升级机器硬件规格,且有上限。

单个Queue的TPS上限

无上限。云消息队列 RabbitMQ 版支持单队列的横向扩展,性能上无并发限制,容量无上限。

有上限,单队列性能上限为单节点上限。

连接数

无上限。云消息队列 RabbitMQ 版实例能承载的连接数可随集群规模扩大而增加,不受连接数增加的影响。

有上限。受机器性能限制,单机的连接数有上限,且无法扩容。

定时消息

秒级精确度、高性能、开箱即用。

使用复杂。

服务可用性和数据可靠性

  • 多可用区高可用。

  • 存算分离架构,故障计算节点可快速摘除隔离。

  • 数据三副本存储。

通过镜像队列或仲裁队列实现,容易出现脑裂问题。

消息堆积能力

在海量消息堆积的情况下,始终保持高性能,不影响集群的正常服务。

大量消息堆积容易引起内存问题,可能导致服务宕机。

弹性能力

  • 通过增减集群节点数量实现扩缩容。

  • Serverless系列按照消息生产消费量收费,无需评估容量。

单机容量就是集群并发容量的上限,扩容需要通过升配机器规格或拆分集群实现。

巡检系统

自动发现并修复死锁、宕机等问题。

无。

Exchange和Queue

表 1. Exchange

项目

云消息队列 RabbitMQ 版

开源RabbitMQ

Exchange类型

支持direct、fanout、headers、topic、x-delayed-message、x-consistent-hash这几种类型。

支持direct、fanout、headers、topic、x-delayed-message、x-consistent-hash这几种类型。

持久化

支持配置持久化与非持久化。

支持配置持久化与非持久化。

Auto Delete

支持。

支持。

Internal

支持。

支持。

Alternate exchange

支持。

支持。

Consistent hash exchange

支持。

支持。

表 2. 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

不支持。

支持。