本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SQS 队列类型
Amazon SQS 支持两种类型的队列 - 标准队列和 FIFO 队列。使用下表中的信息选择适合您情况的队列。要详细了解 Amazon SQS 队列,请参阅Amazon SQS 标准队列和亚马逊SQSFIFO队列。
标准队列 | FIFO 队列 |
---|---|
无限制吞吐量:标准队列支持每个 API 操作( 至少传递一次:保证至少传递一次,这意味着每条消息至少传递一次,但在某些情况下,由于重试或网络延迟,一条消息可能会传递多次。在设计应用程序时,您应该使用幂等性操作来处理可能出现的重复消息,从而确保多次处理同一条消息不会影响系统的状态。 最大努力排序:提供“最大努力排序”功能,这意味着虽然 Amazon SQS 尝试按照消息发送顺序传送消息,但不能保证这一点。在某些情况下,消息可能会无序到达,尤其是在高吞吐量或故障恢复的情况下。对于消息处理顺序至关重要的应用程序,您应该处理应用程序中的重新排序逻辑,或者使用 FIFO 队列来保证严格的排序。 持久性和冗余:标准队列通过在多个 Amazon 可用区存储每条消息的多个副本来确保高持久性。这样可以确保即使基础设施出现故障,消息也不会丢失。 可见性超时:Amazon SQS 让您能够配置可见性超时以控制消息在被接收后隐藏多长时间,从而确保在消息得到完全处理或超时到期之前,其他用户无法处理该消息。 |
高吞吐量:如果您使用批处理,则 FIFO 队列支持每个 API 方法( 仅处理一次:FIFO 队列仅将每条消息传递一次,并在您处理和删除消息之前保持消息处于可用状态。通过使用 先进先出传递:FIFO 队列可以确保您按照每个消息组中的发送顺序接收消息。通过将消息分配到多个组中,您可以并行处理这些消息,同时保持每个组内的顺序。 |
|
|
当吞吐量至关重要时,请使用标准队列在应用程序之间发送数据,例如:
|
如果事件顺序非常重要,可以使用 FIFO 队列在应用程序之间发送数据,例如:
|