Amazon SQS 标准队列 - Amazon Simple Queue Service

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

Amazon SQS 标准队列

Amazon SQS 的默认队列类型为标准。标准队列的每个 API 操作(SendMessageReceiveMessageDeleteMessage)每秒支持接近无限的 API 调用。标准队列支持至少一次消息传递。但是,由于存在允许近乎无限吞吐量的高度分布式架构,偶尔会有一条消息的多个副本不按顺序传送。标准队列会尽最大努力进行排序,保证了消息大致按其发送的顺序进行传递。

有关如何使用 Amazon SQS 控制台创建和配置队列的信息,请参阅创建 Amazon SQS 队列(控制台)。有关 Java 示例,请参阅Amazon SQS JavaSDK示例

您可以在很多情况下使用标准消息队列,只要您的应用程序可以处理多次到达和不按顺序到达的消息,例如:

  • 将实时用户请求从密集型后台工作中分离 – 让用户在调整媒体大小或对媒体编码时上传媒体。

  • 将任务分配给多个工作程序节点 – 处理大量信用卡验证请求。

  • 将消息分批以便进一步处理 – 计划要添加到数据库的多个条目。

有关与标准队列相关的配额,请参阅与队列相关的配额

有关使用标准队列的最佳实践,请参阅针对 Amazon SQS 标准和 FIFO 队列的建议

消息排序

标准队列会尽量保持消息顺序,但可能有一条消息的多个副本不按顺序传送。如果系统要求保留该顺序,建议使用 FIFO (先进先出)队列,或者在每条消息中添加排序信息,以便在收到消息后对其重新排序。

至少一次传递

Amazon SQS 会在多台服务器上存储消息的副本,以实现冗余和高可用性。在极少数情况下,当您接收或删除消息时,存储消息副本的某台服务器可能不可用。

如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且您在接收消息时可能会再次获得该消息副本。将应用程序设计为幂等 应用程序 (多次处理同一消息时,它们不应受到不利影响)。