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 |
Protocol | AMQP 0-9-1. | AMQP 0-9-1, AMQP 1.0, STOMP, MQTT, HTTP, HTTPS, and WebSockets. |
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 redelivered 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. |
Username and password | Generates usernames and passwords by using AccessKey pairs provided by Resource Access Management (RAM). For more information, see Manage static usernames and passwords. | Uses custom usernames and passwords. |
Permission | Grants permissions by using RAM. For more information, see Use RAM for access control. | Grants permissions in the open source RabbitMQ console. |
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. |
Service and 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 linearly scales 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. |
Service availability and data reliability |
| Implements service availability and data reliability by using mirrored queues and quorum queues, which can cause split brains. |
Message accumulation | The accumulation of a huge number of messages does not affect the performance or normal running of clusters. | The accumulation of a large number of messages can cause memory issues and service failures. |
Scalability |
| Implements scale-out by upgrading the machine specification or splitting the cluster. The capacity of a single machine is the maximum concurrency of the cluster. |
Inspection system | Automatically detects and resolves issues such as deadlocks and breakdowns. | None. |
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 Delete | Supported. | Supported. |
Internal | Supported. | Supported. |
Alternate exchange | Supported. | Supported. |
Consistent hash exchange | Supported. | Supported. |
Item | ApsaraMQ for RabbitMQ | Open source 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. |
Retry policy | Supports message retry when consumption times out. For more information, see Message timeout and retry. | Does not support message retry when consumption times out. |
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. |