Amazon SQS 消息配额 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SQS 消息配额

下表列出了与消息相关的配额。

限额 描述
批处理消息 ID 批处理消息 ID 最多可包含 80 个字符。接受以下字符:字母数字字符、连字符 (-) 和下划线 (_)。
消息属性 一条消息可以包含最多 10 个元数据属性。
消息批

一个消息批请求中最多可包含 10 条消息。有关更多信息,请参阅 Amazon SQS 批处理操作 部分中的 配置 AmazonSQS BufferedAsyncClient

消息内容

消息只能包含XMLJSON、和未格式化的文本。允许以下 Unicode 字符:#x9 | #xA | #xD | #x20#xD7FF | #xE000#xFFFD | #x10000#x10FFFF

此列表中未包含的任何字符将被拒绝。有关更多信息,请参阅字符的 W3C 规范

消息组 ID

处理积压的消息,以避免积压大量具有相同消息组 ID 的消息。

MessageGroupId是FIFO队列所必需的。您不能将其用于标准队列。

您必须将非空 MessageGroupId 与消息相关联。如果您未提供 MessageGroupId,操作将失败。

MessageGroupId 的长度为 128 个字符。有效值:字母数字字符和标点符号 (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)

消息保留 默认情况下,消息将保留 4 天。最小值为 60 秒(1 分钟)。最大值为 1209600 秒(14 天)。
消息吞吐量

标准队列

标准队列支持每个操作(、或DeleteMessage)的每秒API呼叫数量非常高 SendMessageReceiveMessage,几乎不受限制。这种高吞吐量使其非常适合需要快速处理大量消息的用例,例如实时数据流或大型应用程序。虽然标准队列会根据需求自动扩展,但必须监控使用模式以确保最佳性能,尤其是在工作负载较高的地区。

FIFO队列

  • FIFO队列中的每个分区每个API操作(SendMessageReceiveMessage、和DeleteMessage)限制为每秒 300 个事务。此限制特别适用于非高吞吐量模式。通过切换到高吞吐量模式,您可以超过此默认限制。要启用高吞吐量模式,请参阅在 Amazon SQS 中为 FIFO 队列启用高吞吐量

  • 如果您使用批处理,则非高吞吐量FIFO队列每个API操作(SendMessageReceiveMessage、和DeleteMessage)每秒最多支持 3,000 条消息。每秒 3,000 条消息代表 300 个API呼叫,每个呼叫有一批 10 条消息。

FIFO队列的高吞吐量

Amazon 的SQSFIFO限制基于API请求的数量,而不是消息限制。对于高吞吐量模式,这些API请求限制如下:

事务吞吐量限制(非批处理调用API)

这些限制定义了每项API操作(例如SendMessageReceiveMessage、或 DeleteMessage)可以独立执行的频率,从而确保在每秒允许的事务数内实现高效的系统性能(TPS)。

以下限制基于非批量呼叫API:

  • 美国东部(弗吉尼亚北部)、美国西部(俄勒冈)和欧洲(爱尔兰):每秒最多 70,000 笔交易(TPS)。

  • 美国东部(俄亥俄州)和欧洲(法兰克福):多达 19,000 TPS。

  • 亚太地区(孟买)、亚太地区(新加坡)、亚太地区(悉尼)和亚太地区(东京):多达 9,000 TPS。

  • 欧洲(伦敦)和南美洲(圣保罗):最多4,500 TPS。

  • 所有其他 Amazon Web Services 区域:默认吞吐量为 2,400 TPS。

通过批处理最大限度地提高吞吐量

在一次API调用中处理多条消息,从而显著提高效率。批处理允许您在单个API请求中发送、接收或删除最多 10 条消息,而不是单独处理每条消息。这减少了API呼叫总数,使您可以每秒处理更多消息,同时保持在该地区的事务限制 (TPS) 之内,从而最大限度地提高吞吐量和系统性能。有关更多信息,请参阅 通过 Amazon SQS 使用水平扩展和操作批处理来提高吞吐量

以下限制基于批量API调用:

  • 美国东部(弗吉尼亚北部)、美国西部(俄勒冈)和欧洲(爱尔兰):每秒最多 700,000 条消息(是 70,000 条非批量限制的 10 倍)。TPS

  • 美国东部(俄亥俄州)和欧洲(法兰克福):每秒多达 190,000 条消息。

  • 亚太地区(孟买)、亚太地区(新加坡)、亚太地区(悉尼)和亚太地区(东京):每秒最多可达 90,000 条消息。

  • 欧洲(伦敦)和南美洲(圣保罗):每秒多达 45,000 条消息。

  • 所有其他 Amazon Web Services 区域:每秒最多 24,000 条消息。

优化批处理之外的吞吐量

虽然批处理可以大大提高吞吐量,但重要的是要考虑其他优化FIFO性能的策略:

  • 跨多个消息组分发消息 IDs-由于单个组内的消息是按顺序处理的,因此将工作负载分配到多个消息组可以提高并行性和整体吞吐量。有关更多信息,请参阅 SQS FIFO 队列高吞吐量的分区和数据分布

  • 高效使用API呼叫-尽量减少不必要的API呼叫,例如频繁更改可见性或重复删除消息,以优化可用电话的使用TPS并提高效率。

  • 使用长轮询接收 — 利用长轮询功能,WaitTimeSeconds在接收请求中设置以减少没有可用消息时的空响应,从而减少不必要的API呼叫并更好地利用配TPS额。

  • 请求增加吞吐量-如果您的应用程序需要的吞吐量高于默认限制,请使用 S ervice Q uotas 控制台请求增加吞吐量。对于高需求的工作负载或默认限制较低的区域,这可能是必要的。要启用高吞吐量模式,请参阅在 Amazon SQS 中为 FIFO 队列启用高吞吐量

消息定时器 消息的默认(最小)延迟为 0 秒。最大值为 15 分钟。
消息大小

最小消息大小为 1 字节(1 个字符)。最大消息大小为 262144 字节 (256 KiB)。

要发送大于 256 KiB 的消息,您可以使用适用于 Java 的亚马逊SQS扩展客户端库和适用于 Python 的亚马逊SQS扩展客户端库。此库允许您发送包含对 Amazon SQS S3 中消息负载的引用的亚马逊消息。最大负载大小为 2 GB。

注意

此扩展库仅适用于同步客户端。

消息可见性超时 消息的默认可见性超时为 30 秒。最短时间为 0 秒。最长时间为 12 小时。
策略信息 最大配额为 8192 个字节、20 个语句、50 个主体或 10 个条件。有关更多信息,请参阅 亚马逊 SQS 政策配额