This topic provides a comparison between Alibaba Cloud Message Queue for RabbitMQ and open source RabbitMQ in terms of performance, stability, and supported features.
Performance
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Maximum transactions per second (TPS) of a cluster | Unlimited. A Message Queue for RabbitMQ cluster is created based on a distributed architecture and contains no primary nodes. This way, the number of nodes can be increased or decreased based on your business requirements. | Limited. To improve the performance of open source RabbitMQ clusters, upgrade the hardware specifications based on upper limits. |
Maximum TPS of a single queue | Unlimited. 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. | Limited. The maximum number of concurrent queries on a queue equals to the maximum number of concurrent queries on a node in the queue. |
Number of connections | Unlimited. The maximum number of connections on an Message Queue for RabbitMQ instance scales linearly with the cluster size and is not affected if the number of connections increases. | Limited. 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 that is accurate to seconds, provides high performance, and is available for immediate use. | Message scheduling is complex to use. |
Stability
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Accumulation of large numbers of messages | Supports a large number of accumulated messages, and provides high performance even if a large number of messages are accumulated. | Does not support a large number of accumulated messages. If a large number of messages are accumulated, a large amount of memory is used. This can cause service breakdowns. |
Scalability | Adopts a distributed architecture that does not support primary nodes. The number of nodes that you want to use can be increased or decreased in an efficient manner. | You can modify the server specifications to adjust the cluster performance. |
Service availability | Adopts a distributed architecture that ensures the high availability of 99.95% of the clusters and provides high availability across 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 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. |
Feature
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Support for client SDKs | Provides an open source SDK for clients of each language and each version. | Supports open source SDKs. |
Scheduled message | Supports message scheduling that is accurate to seconds. You can use the x-delayed-message plug-in or specify the time-to-live (TTL) value to enable message scheduling. | Requires you to install a plug-in or transfer expired messages to support delayed messages. |
Transactional messages | Not supported. | Supported. |
Message retries | If a consumer does not respond within a specific period of time, the message is sent to the consumer again. For more information about the timeout period and the number of retries, see Message retry. | Message retries are not supported. The system does not skip message consumption requests when errors occur. This prevents the system from processing new messages. As a result, messages are accumulated and cause memory issues. This can cause messaging service breakdowns. |
Item | Message Queue for RabbitMQ | Open source RabbitMQ |
---|---|---|
Exchange types | Supports direct, fanout, headers, topic, and x-delayed-message exchanges. | Supports direct, fanout, headers, topic, and x-delayed-message exchanges. |
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 | Not supported. | Supported. |
Item | Message Queue for RabbitMQ | RabbitMQ |
---|---|---|
Queue type | Uses a distributed architecture that does not require you to configure the queue type. This ensures high availability. | Requires manual configuration. Valid values:
|
Node | Does not require manual configuration 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 configuration and supports accumulation of large numbers of messages. | Requires manual configuration 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 configuration. By default, a maximum of 16 retries are supported. For more information about message retries, see Message retry. | Requires manual configuration. Valid values: |
Dead letter exchange | Supported. | Supported. |
Dead letter routing key | Supported. | Supported. |
Single active consumer | Not supported. | Supported. |