ApsaraMQ for RocketMQ imposes limits on resource quotas, instance types, and related parameters. When you use ApsaraMQ for RocketMQ, do not exceed the corresponding limits to prevent application errors.
Parameter limits
The following parameter limits are fixed. Adhere to these specifications to prevent errors from invalid characters or excessive lengths.
Parameter | Value | Description |
Instance name |
| None. |
Topic name |
Do not use the following reserved characters, prefixes, or suffixes for topic names. | Use short, common characters for topic names and avoid special characters, which can cause parsing errors. An excessively long name may cause message operations to be rejected. |
LiteTopic name |
| Use short, common characters for LiteTopic names and avoid special characters, which can cause parsing errors. An excessively long name may cause message operations to be rejected. |
LiteTopic time-to-live (TTL) |
| If no messages are written to a LiteTopic during the specified TTL period, the LiteTopic expires and is automatically deleted. A value of -1 means the LiteTopic never expires. You can set this parameter only when the message type is Lite. |
Consumer group name |
Do not use the following reserved characters or prefixes for consumer group names. | None. |
Instance remarks |
| None. |
Topic remarks | ||
Consumer group remarks | ||
ACL Credentials |
| None. |
Request timeout |
| The request timeout specifies how long the client waits for a synchronous call to complete. Set a value appropriate for your application to avoid prolonged thread blocking. |
Message size | Maximum: 4 MB. This limit applies only to the message body and does not include compression. | You can compress messages and control the payload size to avoid transferring large files. If a message exceeds the size limit, you can split the message or use OSS and transfer the message URL instead. |
Custom message properties |
Do not use the following reserved property keys as custom property keys. | None. |
MessageGroup |
| MessageGroup is the group identifier for ordered messages. It is typically set to an identifier for a group of messages that must be processed in order, such as an order ID or a user ID. |
Message sending retries |
| The client SDK automatically handles message sending retries based on a built-in policy, which is not visible to your application. Do not set this value too high to avoid blocking business threads. If a message still fails after the maximum number of retries, you must implement a fallback mechanism in your application to ensure reliability. |
Message consumption retries |
| You can set a reasonable value as needed. Avoid using retries to trigger an infinite loop. An excessive number of retries can significantly increase system pressure. |
Transaction resolution check interval |
| This interval determines how often the producer client checks the status of a half-transactional message that was not committed due to an exception or restart. Avoid setting this interval too short, as frequent checks can degrade system performance. |
First check time for half-transactional messages |
| None. |
Maximum timeout for half-transactional messages |
| If a half-transactional message is not committed because of a system restart or an exception, the producer client checks its status at the specified transaction resolution check interval. If no result is returned after the maximum timeout period, the half-transactional message is forcibly rolled back. You can monitor this metric to avoid transaction exceptions. |
Maximum delay for scheduled messages |
| You can set the delay for scheduled messages to an hour-level interval. Avoid long delays. |
PushConsumer consumption timeout |
| The PushConsumer consumption timeout is controlled by the ApsaraMQ for RocketMQ server. If a consumer does not process a message within this timeout, the system marks the consumption attempt as failed and triggers a retry. This may cause a small number of duplicate messages. |
PushConsumer local cache |
| When the consumer type is PushConsumer, the client SDK caches some messages locally to improve consumer throughput and performance. The number and size of cached messages must be within the limits of the system memory. |
PushConsumer retry interval |
| None. |
PushConsumer consumption concurrency |
| None. |
Maximum batch size for message retrieval |
| This parameter specifies the maximum number of messages that a consumer can retrieve from the server at a time. You can set a reasonable value as needed. Retrieving too many messages at once can cause many duplicate messages if consumption fails. |
SimpleConsumer maximum invisible duration |
| Set this duration to be slightly longer than your expected message processing time, including any potential retry intervals. |
Consumer long polling timeout | Value range: Minimum: 5 seconds. Maximum: 20 seconds. You can customize this value within the specified range. | With long polling, if no messages are available on the server, the client's request is held open until a message arrives or the timeout elapses. This method reduces empty polling requests and lowers the load on both the client and server, especially when message volume is low. |
Subscription | Filter expression length limit: 4,000 characters (including TAG and SQL filters). | For more information about subscriptions, see Subscription. |
Resource quotas
ApsaraMQ for RocketMQ limits metrics such as queries per second (QPS) and concurrency to ensure production stability. These quotas are sufficient for most scenarios. If these quotas do not meet your business requirements, contact ApsaraMQ for RocketMQ technical support for assistance.
Limit | Value | Description | |
Subscription and pay-as-you-go instances | Serverless instances | ||
Number of instances per region | A maximum of 1,000 instances of all types. | None. | |
Message sending and receiving TPS per instance | Determined by the purchased instance type. For specific limits, see Instance type limits. | Automatic scaling | The message sending and receiving TPS reflects the processing performance of the instance. If the actual TPS exceeds the limit for the instance type, the instance is throttled. Upgrade the instance type promptly. |
Message retention period |
|
| Extend the message retention period as long as your storage costs allow. A longer period allows more time for troubleshooting and message replay. |
Number of inflight messages per consumer group | Maximum: 2,500. | Maximum: 2,500. | An excessive number of inflight messages in a consumer group can slow down consumer responses. Monitor this metric and troubleshoot the cause promptly. |
Number of LiteTopics that a single consumer can subscribe to | Maximum: 2,000. | Maximum: 2,000. | Subscribing to an excessive number of LiteTopics on a single consumer may degrade client performance. To request an increase to this limit, submit a ticket. |
Maximum consumption TPS for each LiteTopic | 200 | 200 | You can create hundreds of thousands to millions of LiteTopics under a topic. The total consumption TPS of the topic is not affected. |
Limitations
Message Queue for RocketMQ, a fully managed platform as a service (PaaS), restricts certain high-risk operations and features available in the open-source Apache RocketMQ for system stability. If you have specific requirements, contact Message Queue for RocketMQ technical support.
Limitation | Description |
Compatibility with Apache RocketMQ Admin tools | Message Queue for RocketMQ does not support the Apache RocketMQ Admin API or command-line interface (CLI) for managing instances, topics, or groups. If you need to manage resources programmatically, use Alibaba Cloud OpenAPI, which provides multi-language SDKs and CLI support. |
Apache RocketMQ Request-Reply messages | Message Queue for RocketMQ does not support sending Apache RocketMQ Request-Reply messages. |
Apache RocketMQ Streaming component | Message Queue for RocketMQ does not provide a managed Apache RocketMQ Streaming component. You can deploy this component yourself in an Alibaba Cloud environment or use the Message Queue for RocketMQ data integration feature for lightweight data integration and computing. |
Apache RocketMQ MQTT component | Message Queue for RocketMQ does not provide a managed Apache RocketMQ MQTT component. We recommend using the Alibaba Cloud ApsaraMQ for MQTT service, which has more features. |
Apache RocketMQ EventBridge component | Message Queue for RocketMQ does not provide a managed Apache RocketMQ EventBridge component. We recommend using the Alibaba Cloud EventBridge service, which has more features. |
Apache RocketMQ-Connector component | Message Queue for RocketMQ does not provide a managed Apache RocketMQ-Connector component. You can use the Message Queue for RocketMQ data integration feature for data input and output. |
Instance type limits
Standard Edition, Single Node Edition, and Professional Edition instances do not support elastic TPS. Plan your resource usage in advance to prevent instance throttling if sudden traffic spikes exceed your specification limits.
The topic and group quotas per instance are sufficient for most large-scale production use cases. As a best practice, isolate your business services across different instances based on department or domain. This practice improves stability and resource management.
The message TPS specification is based on the total number of normal messages sent and received, using a standard message size of 4 KB as the benchmark. A multiplier applies when you use advanced message features or send large messages. For details on how TPS is calculated, see Calculation specifications.
If the actual TPS for message sending and receiving exceeds the upper limit of your purchased instance type:
If elastic TPS is enabled, your instance can operate normally as long as the TPS is within the provisioned elastic range. Usage that exceeds the base specification is billed on a pay-as-you-go basis. If the TPS surpasses the maximum elastic capacity, the instance is subject to throttling.
For more information about the billing of elastic TPS for non-Serverless instances, see Elastic TPS fees. For more information about the billing of elastic TPS for Serverless instances, see Serverless elastic TPS fees.
If your instance does not support elastic TPS or the feature is not enabled, Message Queue for RocketMQ throttles the instance.
ImportantWhen throttling is triggered, the server immediately returns a failure response for new send requests. Requests are not queued or buffered — they fail immediately.
If the client application does not have a retry mechanism configured, any message that receives a throttling failure response is effectively lost. To ensure message reliability, configure a send retry strategy on the client side to handle transient throttling. If you use the ApsaraMQ for RocketMQ SDK, enable the built-in retry policy and set an appropriate maximum retry count.
An excessive number of client connections to a Message Queue for RocketMQ instance consumes significant server resources and can severely impact stability. Therefore, ensure the number of client connections does not exceed the limit for your instance type.
Serverless series instances
Number of concurrent online clients: The total number of online producers and consumers. Each is counted as one client.
Resource count: The total number of topics and consumer groups.
Deployment architecture | Capacity mode | TPS range | Max concurrent clients | Free client quota | Max resource count | Free resource quota | Max LiteTopics |
Shared | Cumulative usage | All | 5,000 | 500 | 3,000 | 100 | / |
Reserved + Elastic | [2,000, 20,000] | 5,000 | 1,000 | 3,000 | 200 | ||
(20,000, 50,000] | 8,000 | 2,000 | 3,000 | 200 | |||
(50,000, 100,000] | 10,000 | 3,000 | 3,000 | 200 | |||
(100,000, 200,000] | 20,000 | 5,000 | 3,000 | 200 | |||
Dedicated | Reserved + Elastic | 5,000 | 3,000 | 2,000 | 3,000 | 300 | 300,000 |
10,000 | 6,000 | 4,000 | 4,000 | 300 | 500,000 | ||
15,000 | 8,000 | 6,000 | 6,000 | 500 | 800,000 | ||
[20,000, 50,000] | 10,000 | 8,000 | 6,000 | 500 | 1,200,000 | ||
(50,000, 100,000] | 20,000 | 10,000 | 6,000 | 500 | 3,000,000 | ||
(100,000, 200,000] | 40,000 | 20,000 | 8,000 | 1,000 | 3,600,000 | ||
(200,000, 300,000] | 80,000 | 40,000 | 10,000 | 1,500 | 5,000,000 | ||
(300,000, 500,000] | 100,000 | 50,000 | 16,000 | 2,000 | 6,500,000 | ||
(500,000, 1,000,000] | 200,000 | 100,000 | 40,000 | 3,000 | 11,600,000 |
Non-Serverless (subscription and pay-as-you-go) instances
Standard edition
Instance sub-series | Instance type | Max base TPS (ops/sec) | Max burst TPS (ops/sec) | Max connections | Egress bandwidth (Mbps) | Free topic quota | Max topic quota | Max consumer groups | Max LiteTopics |
Single Node Edition (No longer sold) | rmq.s1.micro | 500 | Not applicable This instance type does not support burst elasticity. | 2,000 | 1 to 1,000 Customizable. | 100 | 100 | 1,000 | / |
Cluster High-availability Edition | rmq.s2.2xlarge | 2,000 | 4,000 | 300 | 50,000 | ||||
rmq.s2.4xlarge | 4,000 | 4,000 | 150,000 | ||||||
rmq.s2.6xlarge | 6,000 | 6,000 | 500 | 300,000 |
If the topic and consumer group quotas for the top-tier Standard Edition instance (rmq.s2.6xlarge) are insufficient for your business needs, upgrade to the Professional Edition and select a suitable instance type.
Some early Standard Edition instance specifications (for example, rmq-cn-aic46utt204) are no longer available for new purchase. These specifications support only maintenance and renewal of existing instances. If you need to purchase a new instance, select a currently available instance specification.
Professional edition
Instance sub-series | Instance type | Max base TPS (ops/sec) | Max burst TPS (ops/sec) | Max connections | Egress bandwidth (Mbps) | Free topic quota | Max topic quota | Max consumer groups | Max LiteTopics |
Single Node Edition (No longer sold) | rmq.p1.micro | 500 | Not applicable This instance type does not support burst elasticity. | 2,000 | 1 to 1,000 Customizable. | 150 | 150 | 1,500 | / |
Cluster High-availability Edition | rmq.p2.4xlarge | 4,000 | 2,000 | 4,000 | 500 | 2,000 | 150,000 | ||
rmq.p2.6xlarge | 6,000 | 3,000 | 6,000 | 300,000 | |||||
rmq.p2.10xlarge | 10,000 | 5,000 | 10,000 | 1,000 | 500,000 | ||||
rmq.p2.20xlarge | 20,000 | 10,000 | 10,000 | 800,000 | |||||
rmq.p2.30xlarge | 30,000 | 15,000 | 12,000 | 2,000 | 1,000,000 | ||||
rmq.p2.40xlarge | 40,000 | 20,000 | 12,000 | 1,200,000 | |||||
rmq.p2.50xlarge | 50,000 | 20,000 | 14,000 | 1,400,000 | |||||
rmq.p2.100xlarge | 100,000 | 30,000 | 26,000 | 2,200,000 | |||||
rmq.p2.120xlarge | 120,000 | 40,000 | 30,000 | 2,700,000 | |||||
rmq.p2.150xlarge | 150,000 | 50,000 | 38,000 | 3,300,000 | |||||
rmq.p2.200xlarge | 200,000 | 60,000 | 50,000 | 4,500,000 |
If the topic and consumer group quotas for Professional Edition instances of rmq.p2.10xlarge or higher are insufficient for your business needs, submit a ticket.
Platinum edition
Instance sub-series | Instance type | Max base TPS (ops/sec) | Max burst TPS (ops/sec) | Max connections | Egress bandwidth (Mbps) | Free topic quota | Max topic quota | Max consumer groups | Max LiteTopics |
Cluster High-availability Edition | rmq.u2.10xlarge | 10,000 | 5,000 | 10,000 | 1 to 1,000 Customizable. | 200 | 3,000 | 4,000 | 600,000 |
rmq.u2.20xlarge | 20,000 | 10,000 | 10,000 | 800,000 | |||||
rmq.u2.30xlarge | 30,000 | 15,000 | 12,000 | 1,000,000 | |||||
rmq.u2.40xlarge | 40,000 | 20,000 | 10,000 | 1,200,000 | |||||
rmq.u2.50xlarge | 50,000 | 20,000 | 14,000 | 1,400,000 | |||||
rmq.u2.60xlarge | 60,000 | 22,000 | 16,000 | 1,600,000 | |||||
rmq.u2.70xlarge | 70,000 | 24,000 | 18,000 | 1,700,000 | |||||
rmq.u2.80xlarge | 80,000 | 26,000 | 20,000 | 1,800,000 | |||||
rmq.u2.90xlarge | 90,000 | 28,000 | 24,000 | 2,000,000 | |||||
rmq.u2.100xlarge | 100,000 | 30,000 | 26,000 | 2,200,000 | |||||
rmq.u2.120xlarge | 120,000 | 40,000 | 30,000 | 2,700,000 | |||||
rmq.u2.150xlarge | 150,000 | 50,000 | 38,000 | 3,300,000 | |||||
rmq.u2.200xlarge | 200,000 | 60,000 | 50,000 | 4,500,000 | |||||
rmq.u2.250xlarge | 250,000 | 70,000 | 51,000 | 5,600,000 | |||||
rmq.u2.300xlarge | 300,000 | 80,000 | 52,000 | 6,300,000 | |||||
rmq.u2.350xlarge | 350,000 | 90,000 | 53,000 | 7,500,000 | |||||
rmq.u2.400xlarge | 400,000 | 100,000 | 54,000 | 9,300,000 | |||||
rmq.u2.450xlarge | 450,000 | 120,000 | 60,000 | 10,400,000 | |||||
rmq.u2.500xlarge | 500,000 | 140,000 | 66,000 | 11,600,000 | |||||
rmq.u2.550xlarge | 550,000 | 160,000 | 72,000 | 12,800,000 | |||||
rmq.u2.600xlarge | 600,000 | 200,000 | 80,000 | 14,000,000 | |||||
rmq.u2.1000xlarge | 1,000,000 | 300,000 | 134,000 | 23,200,000 |
If the topic and consumer group quotas for Platinum Edition instances are still insufficient for your business needs, submit a ticket.