AWS SQS中的可见性超时是什么意思?

29
4个回答

55
使用SQS作为队列服务时,当您从队列中读取消息时,它不会自动将消息从队列中删除。因此,当您处理该消息时,SQS将在定义的可见性超时时间内等待,然后其他消费者才能再次获取相同的消息。
设置可见性超时时间的最佳值至少应与消费者进程的超时值相同。如果消费者能够成功完成处理,则它将从队列中删除消息,否则如果超时,则消息将重新出现在队列中以供其他消费者再次获取。

2
这个"重试"时间间隔是否可以被视为失败消息的时间间隔?也就是说,如果消费者未能处理消息,它将在可见性超时时间已过之后才进行再次尝试? - The Unknown Dev
2
@TheUnknownDev 这将是可以重试之前的最短时间。由于第一次尝试未能处理消息,因此没有其他消费者会再次获取此消息以进行处理。 - Rohit
我们能否使用相同的receiptHandle在SQS中更改可见性超时时间,然后稍后将其删除? - gourav kumar
这个“在其他消费者收到消息之前我会等待”的规则只适用于发布-订阅模式吗?如果我没记错的话,对于队列而言,只有一个(众多)消费者可以消费一条消息,所以其他消费者接收到相同的消息是不存在的,对吧? - veritas

10

可见性超时是指您为队列项指定的时间段或持续时间,即在消费者获取并处理该队列项后,使其从队列和其他消费者中隐藏起来。

主要目的是避免多个消费者(或同一消费者)反复消耗相同的项。

在确定此值时需要考虑的关键因素是消费者处理单个队列项所需的时间和精力。


2
基本上是消费者处理消息所需的时间。在同一时间内,由于系统是分布式的,该消息对于任何其他消费者都不可用。尽管时间段是可配置的,但是消息的默认可见性超时时间为30秒。最小值为0秒。最大值为12小时。
最初的回答:这里讨论的是消费者处理消息所需的时间,也就是可见性超时时间。在此期间,其他消费者无法获取到该消息(因为这是一个分布式系统)。默认情况下,该时间为30秒,最短可以设置为0秒,最长可以设置为12小时。更多信息请参考:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html

-2

可见性超时是Amazon SQS的重要功能。它有助于确保分布式系统中消息处理的完整性和可靠性。

您可以在此处了解更多信息 https://link.medium.com/u3A8aId0Swb


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接