全部产品
Search
文档中心

云消息队列 RabbitMQ 版:开源对比

更新时间:Feb 02, 2024

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

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

功能

项目

云消息队列 RabbitMQ 版

开源RabbitMQ

客户端SDK支持情况

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

开源SDK。

定时消息

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

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

事务消息

不支持。

支持。

顺序消息

不支持。

支持。

消息优先级

不支持。

支持。

消息重试机制

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

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

可观测能力:Dashboard

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

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

详细信息,请参见Dashboard

支持以下两种方案:

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

  • 方案二:通过Prometheus+Grafana实现,该方案获取的指标较简单,维度不够精确,不利于快速定位业务问题。

可观测能力:消息轨迹

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

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

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

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

稳定性

项目

云消息队列 RabbitMQ 版

开源RabbitMQ

海量消息堆积能力

海量消息堆积能力,高性能不受消息堆积影响。

抗堆积能力差,容易引发内存问题而导致宕机。

弹性能力

集群分布式无主架构,能够横向快速地扩缩容集群规模。

通过变更机器规格来扩容、缩容。

服务可用性

99.95%集群分布式高可用架构,多可用区高可用。

Erlang语言,运维靠经验摸索,且无法避免开源架构的稳定性痛点。

数据可靠性

数据三副本,不会影响TPS性能。

配置副本数变多会导致TPS下降。

巡检系统

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

无。

性能

项目

云消息队列 RabbitMQ 版

开源RabbitMQ

集群TPS上限

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

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

单个Queue的TPS上限

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

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

连接数

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

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

定时消息

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

使用复杂。

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

不支持。

支持。