開源對比
云消息隊列 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 |
詳細信息,請參見Dashboard。 | 支持以下兩種方案:
|
可觀測能力:消息軌跡 |
詳細信息,請參見消息軌跡。 | 消息軌跡信息以文本格式存儲在服務器的log文件中,查詢和定位問題效率較低。 |
服務和性能
項目 | 云消息隊列 RabbitMQ 版 | 開源RabbitMQ |
集群TPS上限 | 無上限。云消息隊列 RabbitMQ 版采用集群分布式部署,無主架構,能夠橫向擴容、縮容集群規模。 | 有上限。受機器性能限制,擴容依賴升級機器硬件規格,且有上限。 |
單個Queue的TPS上限 | 無上限。云消息隊列 RabbitMQ 版支持單隊列的橫向擴展,性能上無并發限制,容量無上限。 | 有上限,單隊列性能上限為單節點上限。 |
連接數 | 無上限。云消息隊列 RabbitMQ 版實例能承載的連接數可隨集群規模擴大而增加,不受連接數增加的影響。 | 有上限。受機器性能限制,單機的連接數有上限,且無法擴容。 |
定時消息 | 秒級精確度、高性能、開箱即用。 | 使用復雜。 |
服務可用性和數據可靠性 |
| 通過鏡像隊列或仲裁隊列實現,容易出現腦裂問題。 |
消息堆積能力 | 在海量消息堆積的情況下,始終保持高性能,不影響集群的正常服務。 | 大量消息堆積容易引起內存問題,可能導致服務宕機。 |
彈性能力 |
| 單機容量就是集群并發容量的上限,擴容需要通過升配機器規格或拆分集群實現。 |
巡檢系統 | 自動發現并修復死鎖、宕機等問題。 | 無。 |
Exchange和Queue
項目 | 云消息隊列 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 | 支持。 | 支持。 |
項目 | 云消息隊列 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 | 不支持。 | 支持。 |