This topic compares Alibaba Cloud Message Queue for RabbitMQ with open source RabbitMQ in terms of features, stability, performance, exchanges, and queues.

Features

ItemMessage Queue for RabbitMQOpen source RabbitMQ
Support for client SDKsSupports open source SDKs for all programming languages and all SDK versions. Supports open source SDKs.
Scheduled messageSupports message scheduling at points in time that are accurate to seconds. Allows you to use the x-delayed-message plug-in or specify a time to live (TTL) value to trigger message scheduling. For more information, see Delayed messages. Requires you to install a plug-in or transfer expired messages to trigger delayed messages.
Transactional messageNot supported. Supported.
Message retriesIf a consumer does not respond within a specified period of time, the message is re-sent to the consumer. For information about the timeout period and the number of retries, see Message retry. Message retries are not supported. The system cannot skip the consumption of messages in which errors occur. As a result, newly produced messages cannot be processed and are accumulated, which may cause memory issues or even breakdowns.
Dashboard
  • Allows you to view various metrics of virtual hosts (vhosts), exchanges, and queues on dashboards. This helps you identify issues at the earliest opportunity.
  • Uses Application Real-Time Monitoring Service (ARMS) Prometheus and open source Grafana to collect and display metrics. This is an out-of-the-box feature provided by Message Queue for RabbitMQ and helps you reduce development costs.

For more information, see Dashboard.

Provides the following solutions:
  • Solution 1: You can obtain a wide range of metrics by using the management UI. However, you must create a system to store and display the metrics.
  • Solution 2: You can use open source Prometheus and Grafana to obtain metrics. However, the metrics you obtain are simple and the dimensions of the metrics are inaccurate. This may prevent you from identifying issues at the earliest opportunity.
Message trace
  • Displays message trace data in multiple cards on a screen. You can view the complete lifecycle of a message at a glance.
  • Provides powerful indexing capabilities and allows you to query message traces by queue, message ID, or message processing duration.

For more information, see Message traces.

Stores message trace data in the log files of brokers in text format. This result in low efficiency in querying message traces and identifying issues.

Stability

ItemMessage Queue for RabbitMQOpen source RabbitMQ
Message accumulationSupports a large number of accumulated messages and provides high performance even in scenarios in which a large number of messages are accumulated. Supports only a small number of accumulated messages. If a large number of messages are accumulated, a large amount of memory is used. This may cause breakdowns.
ScalabilityAdopts a distributed architecture without primary nodes. You can scale out or scale in your cluster in an efficient manner. You can change the machine specification to scale up or scale down the cluster.
Service availabilityAdopts a distributed architecture that ensures an availability of 99.95% of the clusters and provides high availability across multiple zones. Developed by using the Erlang programming language and requires advanced O&M experience. High stability cannot be ensured due to the open source architecture.
Data reliabilityData is stored in three replicas. This ensures high transactions per second (TPS) performance. Cannot ensure high TPS performance when you use multiple replicas.
Inspection systemAutomatically detects and resolves issues such as deadlocks and breakdowns. None.

Performance

ItemMessage Queue for RabbitMQOpen source RabbitMQ
Maximum TPS of a clusterNo limit is imposed. A Message Queue for RabbitMQ cluster is created based on a distributed architecture and contains no primary nodes. You can scale out or scale in the cluster based on your business requirements. An upper limit is imposed. Due to limited machine performance, you must upgrade the hardware specification of the machine to scale up a cluster.
Maximum TPS of a single queueNo limit is imposed. In Message Queue for RabbitMQ, a queue can be scaled out. The number of concurrent queries on a queue and the size of a queue are unlimited. An upper limit is imposed. The maximum number of concurrent queries on a single queue is equal to the maximum number of concurrent queries on a single node in the queue.
The number of connectionsNo limit is imposed. The number of concurrent connections on a Message Queue for RabbitMQ instance scales linearly with the cluster size and is not affected even if the actual number of connections increases. An upper limit is imposed. Each instance in a cluster supports only a limited number of connections, and the threshold cannot be changed to a greater value.
Scheduled messageSupports message scheduling at points in time that are accurate to seconds, provides high performance, and is available for immediate use. Message scheduling is complex to use.

Exchanges and queues

Table 1. Exchanges
ItemMessage Queue for RabbitMQOpen source RabbitMQ
Exchange typeSupports exchanges of the direct, fanout, headers, topic, x-delayed-message, and x-consistent-hash types. Supports exchanges of the direct, fanout, headers, topic, x-delayed-message, and x-consistent-hash types.
PersistenceSupports persistent and non-persistent storage of configurations. Supports persistent and non-persistent storage of configurations.
Auto deleteSupported. Supported.
InternalSupported. Supported.
Alternate exchangeSupported. Supported.
Consistent hash exchangeSupported. Supported.
Table 2. Queues
ItemMessage Queue for RabbitMQRabbitMQ
Queue typeUses a distributed architecture that does not require you to specify a queue type. This ensures high availability. Requires manual configurations. Valid values:
  • Classic: classic image queue
  • Quorum: quorum queue
NodeDoes not require manual configurations or O&M. Requires manual configuration. You can select a node based on your business requirements.
PersistenceSupports persistent and non-persistent storage. Supports persistent and non-persistent storage.
Max lengthDoes not require manual configurations and supports a large number of accumulated messages. Requires manual configurations to prevent breakdowns that are caused by memory overuse in message accumulation scenarios.
Max length bytes
Max in memory length
Max in memory bytes
Delivery limitDoes not require manual configurations. A fixed value is used. By default, up to 16 retries are supported. For more information about message retries, see Message retry. Requires manual configurations.
Dead letter exchangeSupported. Supported.
Dead letter routing keySupported. Supported.
Single active consumerNot supported. Supported.