本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
解决 Amazon SQS 中的 FIFO 限制问题
默认情况下,FIFO 队列支持、和DeleteMessage
的每个 API 操作每秒 300 个SendMessage
事务。ReceiveMessage
即使队列中有可用消息,超过 300 TPS 的请求也会ThrottlingException
出现错误。要缓解这种情况,您可以使用以下方法:
-
使用 Amazon SQS API 批量操作和
SendMessageBatch
DeleteMessageBatch
,ChangeMessageVisibilityBatch
将每个 API 操作每秒最多 3,000 条消息的 TPS 限制提高到每秒 3,000 条,从而降低成本。对于ReceiveMessage
API,将MaxNumberofMessages
参数设置为每笔交易最多接收十条消息。有关更多信息,请参阅 Amazon SQS 批处理操作。 -
对于具有高吞吐量的 FIFO 队列,请按照建议优化分区利用率。批量发送具有相同消息组 ID 的消息。使用来自相同
ReceiveMessage
API 请求的收据句柄批量删除消息或更改消息可见性超时值。 -
增加唯一
MessageGroupId
值的数量。这允许在 FIFO 队列分区之间均匀分配。有关更多信息,请参阅使用 Amazon SQS 消息组 ID。
有关更多信息,请参阅为什么我的 Amazon SQS FIFO 队列没有返回其他消息组中的所有消息或其他消息组中的消息