【发布时间】:2020-09-13 22:45:46
【问题描述】:
我有一个 FIFO SQS 队列,我一个接一个地发送 4 条消息。 在发送前 4 条消息后,我运行了一个程序来接收它们,但只返回了 2 条消息——即使是长轮询并且最大消息 = 10。
我又发送了 4 条消息 - 现在我总共有 8 条消息。用于接收消息的 AWS SQS UI 和我用于接收消息的代码 - 仅显示 2 条消息,但表示有 8 条消息可用。
再发送 4 条消息后,您可以在随附的屏幕截图中看到 SQS UI 显示 12 条消息可用,但仅列出 2 条消息,我有 C# 代码来接收消息,使用长轮询,也只返回 2 条消息.
我做错了什么,我可以看到所有可用的消息?
【问题讨论】:
-
您应该查看Visibility Timeout,当一个消费者查看一条消息时,即使该消息仍在队列中(并且被视为可用),它也是其他消费者看不到。例如,如果您尝试通过 Web 控制台轮询队列并同时使用您的程序使用队列,则控制台中显示的所有消息都将无法用于您的程序,反之亦然在可见性超时期间。
-
是否有任何消息共享相同的消息组 ID?如果是这样,这将解释您所看到的。
-
@Andre.IDK - 是的,好点 - 当我从 SQS UI 查看队列时,我确保没有程序从队列中读取。它是 5 秒。
-
@JohnRotenstein - 是的,所有消息共享相同的消息组 ID。是好还是坏? :))
标签: amazon-web-services amazon-sqs