开源对比
云消息队列 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两种使用方式。更多信息,请参见延时消息。 |
通过插件或使用消息存活时间过期转移方式实现。 |
|
事务消息 |
不支持。 |
支持。 |
|
顺序消息 |
支持。详情请参见顺序消费。 |
支持。 |
|
消息优先级 |
仅独享实例支持。 |
支持。 |
|
消息重试机制 |
消息消费超过一定时间未响应会重新投递。超时时间和重试次数的详细解释,请参见消费重试策略。 |
无消息重试机制。无法跳过有问题消息的消费处理,无法处理新生产的消息,从而会导致消息大量堆积引起内存问题,导致消息服务宕机。 |
|
用户名、密码 |
|
自定义用户名密码。 |
|
权限 |
|
开源权限管理方式。 |
|
可观测能力:Dashboard |
详细信息,请参见Dashboard。 |
支持以下两种方案:
|
|
可观测能力:消息轨迹 |
详细信息,请参见消息轨迹。 |
消息轨迹信息以文本格式存储在服务器的log文件中,查询和定位问题效率较低。 |
服务和性能
|
项目 |
云消息队列 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 |
|
队列类型 |
无需配置,分布式高可用集群。 |
需配置。
|
|
节点 |
无需配置,服务免运维。 |
需配置,可选择节点。 |
|
重试策略 |
消费超时会重投消息,重试策略,请参见消费重试策略。 |
无超时重投策略。 |
|
是否持久化 |
支持持久化和非持久化。 |
支持持久化和非持久化。 |
|
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 |
支持。 详情请参见顺序消费。 |
支持。 |
Action
|
项目 |
云消息队列 RabbitMQ 版 |
开源RabbitMQ |
|
BasicCancel |
取消消费者订阅,已经投递的消息重新入队 |
取消消费者订阅,已经投递的消息处于 Unacked 状态 |