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 批处理操作 部分中的 配置亚马逊 SQSBuffered AsyncClient

消息内容

消息可以仅包含 XML、JSON 和非格式化的文本。允许以下 Unicode 字符:#x9 | #xA | #xD | #x20#xD7FF | #xE000#xFFFD | #x10000#x10FFFF

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

消息组 ID

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

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

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

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

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

标准队列

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

FIFO 队列

  • 对于每个 API 操作(SendMessageReceiveMessageDeleteMessage),FIFO 队列中每个分区的事务处理速率限制为每秒 300 次。这一限制特别适用于非高吞吐量模式。通过切换到高吞吐量模式,您可以超过该默认限制。要启用高吞吐量模式,请参阅为 Amazon SQS 中的 FIFO 队列启用高吞吐量

  • 如果您使用批处理,非高吞吐量 FIFO 队列支持每个 API 操作(SendMessageReceiveMessageDeleteMessage)每秒最多 3000 条消息。每秒 3000 个事务代表 300 次 API 调用,每次调用带有包含 10 条消息的一个批处理。

FIFO 队列的高吞吐量

Amazon SQS FIFO 限制基于 API 请求的数量,而不是消息数量限制。在高吞吐量模式下,API 请求的限制如下:

交易吞吐量限制(非批量 API 调用)

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

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

  • 美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)和欧洲地区(爱尔兰):每秒最多 7 万个事务。

  • 美国东部(俄亥俄州)和欧洲地区(法兰克福):每秒最多 1.9 万个事务。

  • 亚太地区(孟买)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京):每秒最多 9000 个事务。

  • 欧洲地区(伦敦)和南美洲(圣保罗):每秒最多 4500 个事务。

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

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

在一次 API 调用中处理多条消息,从而显著提高效率。您可以通过批处理在一次 API 请求中发送、接收或删除最多 10 条消息,而无需单独处理每条消息。这减少了 API 调用的总数,让您能够在不超出区域的每秒事务数(TPS)限制的情况下每秒处理更多消息,从而最大限度地提高吞吐量和系统性能。有关更多信息,请参阅 利用水平扩缩和操作批处理,借助 Amazon SQS 来提高吞吐量

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

  • 美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)和欧洲地区(爱尔兰):每秒最多 70 万条消息,是非批量限制(每秒 7 万个事务)的 10 倍。

  • 美国东部(俄亥俄州)和欧洲地区(法兰克福):每秒最多 19 万条消息。

  • 亚太地区(孟买)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京):每秒最多 9 万条消息。

  • 欧洲地区(伦敦)和南美洲(圣保罗):每秒最多 4.5 万条消息。

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

利用批处理之外的其他方式优化吞吐量

虽然批处理可以大大提高吞吐量,但您还需要考虑使用其他策略来优化 FIFO 性能:

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

  • 高效使用 API 调用:最大限度地减少不必要的 API 调用,例如频繁更改可见性或重复删除消息,以便优化可用 TPS 的使用并提高效率。

  • 使用长轮询接收:通过在接收请求中设置 WaitTimeSeconds 来使用长轮询,减少没有可用消息时的空响应,从而减少不必要的 API 调用并更好地利用 TPS 配额。

  • 请求增加吞吐量:如果您的应用程序需要的吞吐量高于默认限制,请使用服务配额控制台请求增加吞吐量。对于高需求的工作负载或默认限制较低的区域,有必要请求增加吞吐量。要启用高吞吐量模式,请参阅为 Amazon SQS 中的 FIFO 队列启用高吞吐量

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

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

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

注意

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

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