Amazon SQS 标准队列 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon SQS 标准队列

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

有关如何使用 Amazon SQS 控制台创建和配置队列的信息,请参阅创建 Amazon SQS 队列(控制台)。有关 Java 示例,请参阅Amazon SQS Java 软件开发工具包示例

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

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

  • 将任务分配到多个工作人员节点— 处理大量信用卡验证请求。

  • Batch 消息以供将来处理— 计划要添加到数据库的多个条目。

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

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

消息排序

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

至少一次传递

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

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