All Products
Search
Document Center

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

Last Updated:Apr 16, 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

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

  • 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 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 obtain metrics by using Managed Service for Prometheus and open source Grafana.

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.

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

  • Supports multi-zone deployment and high availability.

  • Supports a decoupled storage and compute architecture, which allows compute nodes in which faults occur to be quickly removed and isolated.

  • Supports data storage in three replicas.

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-in or scale-out by decreasing or increasing the number of nodes.

  • Provides serverless instances which charge you based on the number of produced and consumed messages. You do not need to estimate capacity in advance.

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

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 Delete

Supported.

Supported.

Internal

Supported.

Supported.

Alternate exchange

Supported.

Supported.

Consistent hash exchange

Supported.

Supported.

Table 2. Queues

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:

  • Classic: classic mirrored 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.

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.