解决 Amazon SQS 中的 FIFO 限制问题 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

解决 Amazon SQS 中的 FIFO 限制问题

默认情况下,FIFO 队列支持、和DeleteMessage的每个 API 操作每秒 300 个SendMessage事务。ReceiveMessage即使队列中有可用消息,超过 300 TPS 的请求也会ThrottlingException出现错误。要缓解这种情况,您可以使用以下方法:

  • 在 Amazon SQS 中为 FIFO 队列启用高吞吐量.

  • 使用 Amazon SQS API 批量操作和 SendMessageBatchDeleteMessageBatchChangeMessageVisibilityBatch将每个 API 操作每秒最多 3,000 条消息的 TPS 限制提高到每秒 3,000 条,从而降低成本。对于 ReceiveMessage API,将MaxNumberofMessages参数设置为每笔交易最多接收十条消息。有关更多信息,请参阅 Amazon SQS 批处理操作

  • 对于具有高吞吐量的 FIFO 队列,请按照建议优化分区利用率。批量发送具有相同消息组 ID 的消息。使用来自相同 ReceiveMessage API 请求的收据句柄批量删除消息或更改消息可见性超时值。

  • 增加唯一MessageGroupId值的数量。这允许在 FIFO 队列分区之间均匀分配。有关更多信息,请参阅 使用 Amazon SQS 消息组 ID

有关更多信息,请参阅为什么我的 Amazon SQS FIFO 队列没有返回其他消息组中的所有消息或其他消息组中的消息? 在Amazon 知识中心指南中。