All Products
Search
Document Center

ApsaraMQ for RabbitMQ:Comparison between ApsaraMQ for RabbitMQ and open source RabbitMQ

Last Updated:Mar 15, 2024

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

  • Allows you to view various metrics of virtual hosts (vhosts), exchanges, and queues on the dashboard. This helps you identify issues at the earliest opportunity.

  • Uses Managed Service for Prometheus provided by Application Real-Time Monitoring Service (ARMS) and open source Grafana to collect and display metrics. This is an out-of-the-box feature provided by ApsaraMQ 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 that 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 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

Table 1. Exchanges

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.

Table 2. Queues

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:

  • Classic: classic image queue

  • Quorum: quorum queue

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.