SQS 消息至少传递一次的百分比是多少?

问题描述 投票:0回答:3

我理解标准 SQS 使用“至少一次”传递,而 FIFO 消息只传递一次。

SQS 消息的重复百分比(大约)是多少? 在权衡标准队列与 FIFO 时,这似乎是一个重要因素。我想知道这是否取决于消息吞吐量?

amazon-web-services amazon-sqs fifo
3个回答
2
投票

亚马逊没有针对您的问题提供任何详细数字(甚至是大概的数字)。

我能找到的最好的内容是在AWS SQS 文档中。强调我的:

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

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

根据亚马逊的解释,这与您的消息吞吐量无关。您应该将其视为“预期的”AWS 平台故障。

只要您的消息处理程序是幂等的,这就不会成为问题。


0
投票

SQS 文档称,如果托管 SQS 的节点之一出现故障,并且无法接收删除消息,则可能会出现重复消息。

基于此,您的重复消息数量将会相当少。如果您的应用程序不能容忍重复的消息,那么您可能需要使用 FIFO 队列。


0
投票

我认为您应该问的问题是“我的进程是否具有处理重复消息的幂等性?”

如果不是,请使您的进程幂等并使用标准 SQS 队列。

如果是,请使用标准SQS队列。

您始终可以使用 SQS FIFO 队列,但这将使您的应用程序代码与不支持此类功能的其他队列系统“不兼容”。

© www.soinside.com 2019 - 2024. All rights reserved.