可见性超时对 AWS SQS 意味着什么

What does visibility Timeout mean for AWS SQS

Amazon SQS 服务的 "Visibility Timeout" 是什么意思?什么因素决定了这个领域的理想价值?

我看过http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/Welcome.html

可见性超时是您为队列项目指定的时间段或持续时间,当消费者获取和处理该队列项目时,对队列和其他消费者隐藏。

主要目的是为了避免多个消费者(或同一个消费者),重复消费同一个商品。

得出此值时要考虑的关键因素是消费者处理单个队列项目所花费的时间和精力。

当使用 sqs 作为排队服务时,当您读取队列外的消息时,它不会自动删除队列外的消息。 所以当你在处理消息的时候,sqs会等待定义为visibility timeout的时间段,其他消费者才会再次收到同样的消息。

为可见性超时设置的最佳时间值至少是消费者进程的超时值。如果消费者能够成功完成处理,那么它会将消息从队列中删除,否则如果超时,则消息会重新出现在队列中以供其他消费者再次选择。

基本上是消费者处理消息所花费的时间。同时,该消息对于任何其他消费者都是不可用的(因为这是一个分布式系统)。虽然时间周期是可配置的,但消息的默认可见性超时为 30 秒。最小值为 0 秒。最长为 12 小时。

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html