ApsaraMQ for RabbitMQ is a messaging service that is developed based on highly available distributed storage. This service supports the AMQP 0-9-1 protocol and is compatible with open source RabbitMQ clients. Compared with open source RabbitMQ, ApsaraMQ for RabbitMQ resolves pain points such as message accumulation and split brain and provides benefits such as high concurrency, distributed architecture, and flexible scaling. This topic compares ApsaraMQ for RabbitMQ and open source RabbitMQ in terms of features, stability, performance, exchanges, and queues to help you better understand and use ApsaraMQ for RabbitMQ.
For more information about ApsaraMQ for RabbitMQ, see Benefits.
Features
Item | ApsaraMQ for RabbitMQ | Open source RabbitMQ |
Client SDK | 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 and 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 support delayed messages. |
Transactional message | Not supported. | Supported. |
Ordered message | Not supported. | Supported. |
Message priority | Not supported. | Supported. |
Message retry | If a message fails to be consumed within a specific period of time, the message is re-sent to the consumer. For information about the timeout period and number of retries of messages, see Message timeout and retry. | Message retry is not supported. The system cannot skip messages in which errors occur. As a result, newly produced messages cannot be processed and are accumulated. This can cause memory issues or 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 results in low efficiency in querying message traces and identifying issues. |
Stability
Item | ApsaraMQ 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 a cluster in an efficient manner. | Allows you to change the machine specification to scale up or scale down a 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 rich 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 | ApsaraMQ for RabbitMQ | Open source RabbitMQ |
Maximum TPS per cluster | No limit is imposed. An ApsaraMQ for RabbitMQ cluster is created based on a distributed architecture and contains no primary nodes. You can scale out or scale in a cluster based on your business requirements. | An upper limit is imposed. You must upgrade the hardware specification of the machine to scale up a cluster due to limited machine performance. |
Maximum TPS per queue | No limit is imposed. In ApsaraMQ 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 queue is equal to the maximum number of concurrent queries on a single node in the queue. |
Connections | No limit is imposed. The number of concurrent connections on an ApsaraMQ 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 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. | Supports message scheduling. However, this feature is complex to use. |
Exchanges and queues
Item | ApsaraMQ 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 deletion | Supported. | Supported. |
Internal | Supported. | Supported. |
Alternate exchange | Supported. | Supported. |
Consistent hash exchange | Supported. | Supported. |
Item | ApsaraMQ 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 configurations. 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, see Message timeout and retry. | Requires manual configurations. |
Dead letter exchange | Supported. | Supported. |
Dead letter routing key | Supported. | Supported. |
Single active consumer | Not supported. | Supported. |