Amazon SQS/Amazon SNS迁移至轻量消息队列(原 MNS)

轻量消息队列(原 MNS)支持将亚马逊云计算服务AWS(Amazon Web Services)的产品Amazon Simple Queue Service(Amazon SQS)和Amazon Simple Notification Service(Amazon SNS)数据无缝迁移至阿里云产品轻量消息队列(原 MNS)。本文从产品功能、限制和SDK角度介绍Amazon SQS、Amazon SNS轻量消息队列(原 MNS)的区别,以及如何通过简单的适配完成SQSSNS数据的迁移。

背景信息

Amazon SQS、Amazon SNS轻量消息队列(原 MNS)产品功能接近一致。阿里云产品轻量消息队列(原 MNS)提供队列模型和主题模型,AWS产品SQSSNS分别提供队列模型和主题模型。

功能对比

下表从队列模型和主题模型两个功能角度对比阿里云产品轻量消息队列(原 MNS)AWS云产品SQSSNS。

功能分类

功能明细

轻量消息队列(原 MNS)

Amazon SQS/Amazon SNS

队列模型

消息生命周期

支持,消息状态机的状态包含以下类型:

  • Active

  • Inactive

  • Deleted

  • Expired

支持,消息状态机的状态包含以下类型:

  • Active

  • Inactive

  • Deleted

  • Expired

消息自定义保存时长

支持

支持

消息延迟(消息定时时间)

支持

支持

消息可见性超时时间

支持

支持

消息最大长度配置

支持

支持

死信队列

支持

支持

FIFO队列(顺序/去重)

不支持

支持

主题模型

过滤订阅

支持Tag过滤

支持JSON策略过滤

Queue订阅

支持

支持

HTTP订阅

支持

支持

短信订阅

支持

支持

邮箱订阅

支持

支持

移动推送

支持

支持

函数计算

支持

支持

死信队列

支持

支持

FIFO队列(顺序/去重)

不支持

支持

功能限制

下表从队列模型和主题模型两个功能角度对比阿里云产品轻量消息队列(原 MNS)AWS云产品SQSSNS。

功能分类

功能明细

轻量消息队列(原 MNS)

Amazon SQS/Amazon SNS

队列模型

Queue命名

队列名称区分大小写,最多可包含120个字符。

队列名称区分大小写,最多可包含80个字符。

消息保存时间

7

14

长轮询间隔

0s~30s,默认为15s。

0s~20s

消息最大负载

64 KB。如需调整消息最大负载,可提交工单申请。

256 KB

消息可见性超时时间

1s~43200s,默认为30s。

1s~43200s,默认为30s。

队列标识

  • 队列名称:同一地域内唯一。

  • MsgID:全局唯一。

  • ReceiptHandle:自定义字符串。

  • 队列名称:同一地域内唯一。

  • MsgID:全局唯一。

  • ReceiptHandle:自定义字符串。

消息延时时间

使用参数DelaySeconds设置,取值范围:0s~604800s。

使用参数DelaySeconds设置,取值范围:0s~604800s。

消息堆积数量限制

无限制

无限制

访问QPS限制

不在队列资源维度设限,每个主账号每个地域有限流阈值,数据流消息收发相关接口QPS上限为20000,更多信息,请参见限流策略

无限制

主题模型

Topic名称限制

120个字符,不区分大小写。

3~64个字符,区分大小写。

消息最大长度

64 KB

256 KB

重试策略限制

  • 退避模式:重试3次,每次重试间隔是10 s20 s之间的随机值。

  • 指数衰减模式:重试176次,总计重试时间为1天。

  • 退避模式:重试3次,每次重试间隔是20s。

  • 指数衰减模式:支持修改重试次数。

单主题订阅数量限制

100个。如需调整,可提交工单申请。

12500000

访问QPS限制

不在主题资源维度设限,每个主账号每个地域有限流阈值,数据流消息收发相关接口QPS上限为20000,更多信息,请参见限流策略

每个主题300 QPS,或者每秒10 MB流量,以先到者为准。

SDK对比

SDK类型

阿里云轻量消息队列(原 MNS)

Amazon SQS

Amazon SNS

管控API

API参考

API参考

API参考

HTTP SDK

支持Java、Python、C#、PHP、C++、GoJMSSDK。

支持Java、JavaScript、PHP、Python、RubyWindows & .NETSDK。

支持Java、JavaScript、PHP、Python、RubyWindows & .NETSDK。

迁移步骤说明

SQSSNS迁移数据到轻量消息队列(原 MNS)时,为确保您的业务平滑过渡,建议您首先同步队列、主题和订阅的元数据,然后业务侧做双读双写策略过渡。下图以SQS数据迁移到轻量消息队列(原 MNS)为例,介绍迁移的过程。具体步骤如下:

阶段一:存量业务全部基于SQS生产消费

image

阶段二:消费者业务同时消费SQS轻量消息队列(原 MNS)消息

image

阶段三:生产者业务切流到轻量消息队列(原 MNS)

image

阶段四:存量SQS消息消费完成后下线

image