Wai*_*ein 3 amazon-sqs amazon-web-services
我正在参加 AWS 课程并试图了解 AWS SQS(简单队列服务)的工作原理。我对可见性超时感到有些困惑。我知道可见性超时是要在其中处理消息的持续时间。
这是模型
正如您在图中所见,消费者将拉取一条或多条消息,并在可见性超时内处理一条或多条消息。如果一条或多条消息未在可见性超时内处理,则使用者将不会接收或处理该消息或这些消息,并且这些消息将保留在队列中。
以下是我的困惑:
可见性超时是否对一次轮询中的所有消息都有效?或者超时分别应用于每条消息?例如,消费者一次轮询 5 条消息。如果其中 2 个在超时内未处理,则将其中的 2 个发送回队列,并删除其他 3 个。或者在超时内处理所有 5 条消息,如果其中任何一条消息失败,则所有消息都将被发送回队列。
这是我的第二个困惑。可见性超时如何有效?那是消费者开始轮询消息并接收消息的时间吗?还是在消费者开始轮询消息并在消费者端完成处理消息(例如,将消息保存到数据库中)的时间有效?
当您收到消息时,可见性超时开始。如果您批量收到多条消息,则所有消息的可见性超时都从那时开始。
要告诉 SQS 您已经完全处理了一条 SQS 消息,您可以使用DeleteMessage从 SQS 中删除该消息。如果您只处理了 5 条消息中的 3 条,那么您只从 SQS 中删除了这 3 条消息。
如果您没有在可见性超时到期之前将它们从 SQS 中删除,或者您通过将它们的可见性超时设置为零明确地使它们再次可见(这实际上是在告诉 SQS“我不会去要处理此消息,请让其他人”)。您还可以在处理动态消息后动态增加可见性超时。
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |