This topic compares Alibaba Cloud Message Queue for RabbitMQ with open source RabbitMQ in terms of features, stability, performance, exchanges, and queues.
Features
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Support for client SDKs | Supports open source SDKs for all programming languages and all SDK versions. | Supports open source SDKs. |
Scheduled message | Supports 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 message | Not supported. | Supported. |
Message retries | If 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 |
For more information, see Dashboard. | Provides the following solutions:
|
Message trace |
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
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Message accumulation | Supports 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. |
Scalability | Adopts 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 availability | Adopts 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 reliability | Data is stored in three replicas. This ensures high transactions per second (TPS) performance. | Cannot ensure high TPS performance when you use multiple replicas. |
Inspection system | Automatically detects and resolves issues such as deadlocks and breakdowns. | None. |
Performance
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Maximum TPS of a cluster | No 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 queue | No 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 connections | No 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 message | Supports 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
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Exchange type | Supports 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. |
Persistence | Supports persistent and non-persistent storage of configurations. | Supports persistent and non-persistent storage of configurations. |
Auto delete | Supported. | Supported. |
Internal | Supported. | Supported. |
Alternate exchange | Supported. | Supported. |
Consistent hash exchange | Supported. | Supported. |
Item | Message Queue for RabbitMQ | RabbitMQ |
---|---|---|
Queue type | Uses a distributed architecture that does not require you to specify a queue type. This ensures high availability. | Requires manual configurations. Valid values:
|
Node | Does not require manual configurations or O&M. | Requires manual configuration. You can select a node based on your business requirements. |
Persistence | Supports persistent and non-persistent storage. | Supports persistent and non-persistent storage. |
Max length | Does 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 limit | Does 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 exchange | Supported. | Supported. |
Dead letter routing key | Supported. | Supported. |
Single active consumer | Not supported. | Supported. |