本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SQS 标准队列
Amazon SQS 提供了标准的默认队列类型为。标准队列的每个 API 操作(SendMessage、ReceiveMessage 或 DeleteMessage)每秒支持接近无限的 API 调用。标准队列支持至少一次消息传递。但是,由于存在允许近乎无限吞吐量的高度分布式架构,偶尔会有一条消息的多个副本不按顺序传送。标准队列会尽最大努力进行排序,保证了消息大致按其发送的顺序进行传递。
有关如何使用 Amazon SQS 控制台创建和配置队列的信息,请参阅。创建 Amazon SQS 队列(控制台). 有关 Java 示例,请参阅Amazon SQS Java SDK 示例.
您可以在很多情况下使用标准消息队列,只要应用程序能够处理多次到达和不按顺序到达的消息,例如:
-
将实时用户请求与密集型后台工作分离— 让用户在调整媒体大小或对媒体编码时上传媒体。
-
将任务分配到多个工作节点— 处理大量信用卡验证请求。
-
Batch 处理消息以供将来处理— 计划要添加到数据库的多个条目。
有关与标准队列相关的配额,请参阅与队列相关的配额.
有关使用标准队列的最佳实践,请参阅。针对 Amazon SQS 标准队列和 FIFO 队列的建议.
消息排序
标准队列会尽量保持消息顺序,但可能有一条消息的多个副本可能不按顺序传送。如果您的系统要求保留该订单,我们建议使用FIFO(先进先出)队列或者在每条消息中添加排序信息,以便在收到消息后对其重新排序。
至少一次传递
Amazon SQS 会在多台服务器上存储消息的副本,以实现冗余和高可用性。在极少数情况下,当您接收或删除消息时,存储消息副本的某台服务器可能不可用。
如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且您在接收消息时可能会再次获得该消息副本。将应用程序设计为幂等 应用程序 (多次处理同一消息时,它们不应受到不利影响)。