Simple Message Queue (SMQ, formerly MNS) supports migration from AWS Simple Queue Service (SQS) and AWS Simple Notification Service (SNS). Compare features, limits, and SDKs between the services, then follow a four-stage dual-read/dual-write process to migrate your workloads.
Background information
SMQ, Amazon SQS, and Amazon SNS share similar messaging capabilities:
-
SMQ provides both the queue-based messaging model and the topic-based messaging model.
-
Amazon SQS provides the queue-based messaging model.
-
Amazon SNS provides the topic-based messaging model.
Because the services overlap in functionality, migration from Amazon SQS or Amazon SNS to SMQ is straightforward.
Prerequisites
Before you begin, complete the following:
-
An Alibaba Cloud account with SMQ activated. Activate SMQ and authorize RAM users to access SMQ.
-
An inventory of your Amazon SQS queues and Amazon SNS topics, including configurations such as retention periods, visibility timeouts, delay settings, subscriptions, and retry policies.
-
Access credentials for both your AWS and Alibaba Cloud environments.
-
A clear understanding of your message producers and consumers for planning the dual-read/dual-write cutover.
Concept mapping
The following table maps key concepts between Amazon SQS/Amazon SNS and SMQ. Note the behavioral differences in the third column.
| AWS concept | SMQ equivalent | Behavioral differences |
|---|---|---|
| SQS Standard Queue | SMQ Queue (queue-based messaging model) | Both support Active, Inactive, Deleted, and Expired message states. SMQ defaults to a 30-second visibility timeout; Amazon SQS has no default. |
| SQS FIFO Queue | SMQ FIFO Queue (sequencing) | Both supported. |
| SQS Dead-letter Queue | SMQ Dead-letter Queue | Both supported. |
| SNS Topic | SMQ Topic (topic-based messaging model) | SMQ topic names are not case-sensitive (1-120 characters). Amazon SNS topic names are case-sensitive (3-64 characters). |
| SNS FIFO Topic | SMQ FIFO Topic (sequencing) | Both supported. |
| SNS Subscription (JSON filter policy) | SMQ Subscription (tag-based filtering) | Data filtering differs: SMQ uses tag-based filtering; Amazon SNS uses JSON policy-based filtering. Convert your filter logic during migration. |
| SNS Subscription endpoints (Queue, HTTP, SMS, Email, Mobile push, Lambda) | SMQ Subscription endpoints (Queue, HTTP, Text message, Email, Mobile push, Function Compute) | Amazon SNS integrates with AWS Lambda; SMQ integrates with Function Compute. |
| SNS Dead-letter Queue | SMQ Dead-letter Queue (topic model) | Both supported. |
Feature comparison
The following tables compare SMQ, Amazon SQS, and Amazon SNS features by messaging model.
Queue-based messaging model
| Feature | SMQ | Amazon SQS |
|---|---|---|
| Message lifecycle | Supported (states: Active, Inactive, Deleted, Expired) | Supported (states: Active, Inactive, Deleted, Expired) |
| Custom retention period for messages | Supported | Supported |
| Message delay (scheduled period) | Supported | Supported |
| Visibility timeout period | Supported | Supported |
| Maximum message length | Supported | Supported |
| Dead-letter queue | Supported | Supported |
| FIFO queue (sequencing) | Supported | Supported |
Topic-based messaging model
| Feature | SMQ | Amazon SNS |
|---|---|---|
| Data filtering | Data filtering by tag | Data filtering by JSON policy |
| Queue subscription | Supported | Supported |
| HTTP subscription | Supported | Supported |
| Text message subscription | Supported | Supported |
| Email subscription | Supported | Supported |
| Mobile push | Supported | Supported |
| Function Compute | Supported | Supported |
| Dead-letter queue | Supported | Supported |
| FIFO topic (sequencing) | Supported | Supported |
Limit comparison
Some limit differences may affect your migration plan. The following tables compare SMQ, Amazon SQS, and Amazon SNS limits by messaging model.
Queue-based messaging model limits
| Limit | SMQ | Amazon SQS |
|---|---|---|
| Queue naming | Case-sensitive, 1-120 characters. | Case-sensitive, 1-80 characters. |
| Message retention period | 7 days | 14 days |
| Long polling interval | Valid values: 0 to 30. Default value: 15. Unit: seconds. | Valid values: 0 to 20. Unit: seconds. |
| Maximum message payload | 64 KB. To increase this limit, submit a ticket. | 256 KB |
| Visibility timeout period | Valid values: 1 to 43200. Default value: 30. Unit: seconds. | Valid values: 1 to 43200. Unit: seconds. No default value is defined. |
| Queue ID | Queue names are unique per region. Message IDs are globally unique. Receipt handles are custom strings. | Queue names are unique per region. Message IDs are globally unique. Receipt handles are custom strings. |
| Message delay | DelaySeconds: 0-604800 seconds. | DelaySeconds: 0-604800 seconds. |
| Maximum number of accumulated messages | No limit | No limit |
| Maximum queries per second (QPS) | No per-queue limit. Total QPS (queue + topic) capped at 20,000 per account per region. Throttling policy. | No limit |
Topic-based messaging model limits
| Limit | SMQ | Amazon SNS |
|---|---|---|
| Topic name | Case-insensitive, 1-120 characters. | Case-sensitive, 3-64 characters. |
| Maximum message length | 64 KB | 256 KB |
| Retry policy | Backoff: 3 retries at 10-20 second intervals. Exponential decay: 176 retries per day. | Backoff: 3 retries at 20-second intervals. Exponential decay: Configurable retry count. |
| Maximum number of subscriptions to a single topic | 100. To increase this limit, submit a ticket. | 12500000 |
| Maximum QPS | No per-topic limit. Total QPS (queue + topic) capped at 20,000 per account per region. Throttling policy. | 300 QPS per topic or 10 MB/s. Counting starts when a topic receives its first request. |
Key limit differences and workarounds
Pay attention to these key limit differences:
-
Maximum message payload (64 KB vs. 256 KB): SMQ defaults to 64 KB, compared to 256 KB for Amazon SQS and Amazon SNS. To request a higher limit, submit a ticket. Alternatively, store large message bodies in OSS and pass the object reference in the message. Transmit oversized messages.
-
Maximum subscriptions per topic (100 vs. 12,500,000): SMQ allows 100 subscriptions per topic by default, compared to 12,500,000 for Amazon SNS. To increase this limit, submit a ticket.
-
Message retention period (7 days vs. 14 days): SMQ retains messages for up to 7 days, compared to 14 days for Amazon SQS. Ensure your consumers process messages within the 7-day window.
-
Data filtering: SMQ uses tag-based filtering for topic subscriptions; Amazon SNS uses JSON policy-based filtering. Redesign your filter logic during migration.
SDK comparison
The following table compares available SDKs.
| SDK | Alibaba Cloud SMQ | Amazon SQS | Amazon SNS |
|---|---|---|---|
| API operations | API reference | API reference | API reference |
| HTTP SDK | SDK for Java, SDK for Python, SDK for C#, SDK for PHP, SDK for C++, SDK for Go, and SDK for JMS | SDK for Java, SDK for JavaScript, SDK for PHP, SDK for Python, SDK for Ruby, and SDK for .NET | SDK for Java, SDK for JavaScript, SDK for PHP, SDK for Python, SDK for Ruby, and SDK for .NET |
Migration process
Synchronize queues, topics, and subscription metadata between AWS and SMQ, then use dual-read and dual-write policies to migrate data.
The migration consists of four stages, each with a goal, required actions, and exit criteria.
Stage 1: Baseline and resource preparation
Goal: Prepare equivalent SMQ resources.
Actions:
-
Inventory all Amazon SQS queues and Amazon SNS topics. Record their configurations: retention periods, visibility timeouts, delay settings, and subscriptions.
-
Create corresponding queues and topics in SMQ with equivalent configurations. Account for limit differences: message payload size, subscription limits, and retention periods.
-
Synchronize subscription metadata. Convert Amazon SNS JSON filter policies to SMQ tag-based filters where applicable.
-
Set up monitoring for both AWS and SMQ to compare message flow during migration.
Exit criteria: SMQ queues and topics are created and configured. Monitoring is in place for both environments.
Stage 2: Enable dual-read on consumers
Goal: Enable dual-read so that consumers process messages from both services.
Actions:
-
Update consumer applications to read from both Amazon SQS and SMQ queues (dual-read), ensuring they handle SMQ messages before producers switch over.
-
Validate that SMQ messages are consumed correctly. Verify message format compatibility, acknowledgment behavior, and error handling.
-
Monitor consumer lag and error rates on both sides to confirm that SMQ consumption is stable.
Exit criteria: Consumers successfully process messages from SMQ with no errors for a sustained period.
Stage 3: Switch producers to SMQ
Goal: Switch producers to write to SMQ while maintaining dual-read on the consumer side.
Actions:
-
Update producer applications to publish messages to SMQ instead of, or in addition to, Amazon SQS.
-
If running dual-write, monitor both message flows to confirm messages arrive correctly in SMQ.
-
Once producers are fully switched to SMQ, you can stop dual-write. Consumers should continue dual-read to drain any remaining messages from Amazon SQS.
Exit criteria: All producers are successfully publishing to SMQ. Message delivery is confirmed through monitoring.
Stage 4: Decommission AWS resources
Goal: Decommission Amazon SQS/Amazon SNS resources.
Actions:
-
Wait for all remaining messages in Amazon SQS queues to drain. Monitor queue depth until it reaches zero.
-
Remove dual-read logic from consumer applications so they only read from SMQ.
-
Decommission the Amazon SQS queues and Amazon SNS topics in AWS.
-
Update your documentation and runbooks to reflect the new SMQ-based architecture.
Exit criteria: All Amazon SQS/Amazon SNS resources are decommissioned. All producers and consumers operate exclusively through SMQ.
Testing and validation
Perform these tests before and during migration:
-
Functional testing: Send test messages through SMQ. Verify that consumers receive them correctly and that message attributes, delays, and visibility timeouts work as expected.
-
Filter validation: Verify that SMQ tag-based filters produce the same results as your Amazon SNS JSON policy filters.
-
Performance testing: Compare message throughput and latency between your AWS setup and SMQ. The SMQ QPS limit is 20,000 per account per region. Throttling policy.
-
Dead-letter queue testing: Send malformed or unprocessable messages to verify that SMQ dead-letter queues capture them correctly.
-
Retry behavior testing: Verify that the retry policy (backoff and exponential decay) meets your requirements. Note the differences in retry intervals and counts between SMQ and Amazon SNS.
-
Monitoring and alerting: Confirm that your monitoring tools capture SMQ metrics (message count, consumer lag, error rates) and alerts fire as expected.
-
Rollback readiness: Keep Amazon SQS/Amazon SNS resources active during Stages 2 and 3. If issues arise with SMQ, revert producers to Amazon SQS and consumers to dual-read mode until resolved.