Amazon web services 延迟队列消息是否算作“延迟队列消息”;“飞行中”;在SQS中?

Amazon web services 延迟队列消息是否算作“延迟队列消息”;“飞行中”;在SQS中?,amazon-web-services,queue,delay,amazon-sqs,Amazon Web Services,Queue,Delay,Amazon Sqs,我正在做一个我打算使用的项目 我在理解“机上”信息的确切含义方面有点困难 文件中有一条注释说明: 注意 每小时的机上邮件数量限制为120000条 队列消息在用户收到后即在飞行中发送 队列,但尚未从队列中删除。如果你到达 120000限制,您将收到来自Amazon的超限错误消息 SQS。为了避免达到限制,您应该删除邮件 在处理它们之后从队列中删除。您还可以增加 用于处理消息的队列数 但我不完全确定什么被认为是“队列接收的”。在流程图中,队列“接收”的消息在哪里 我将有很多消息被故意延迟(在图的第

我正在做一个我打算使用的项目

我在理解“机上”信息的确切含义方面有点困难

文件中有一条注释说明:

注意

每小时的机上邮件数量限制为120000条 队列消息在用户收到后即在飞行中发送 队列,但尚未从队列中删除。如果你到达 120000限制,您将收到来自Amazon的超限错误消息 SQS。为了避免达到限制,您应该删除邮件 在处理它们之后从队列中删除。您还可以增加 用于处理消息的队列数

但我不完全确定什么被认为是“队列接收的”。在流程图中,队列“接收”的消息在哪里

我将有很多消息被故意延迟(在图的第一个蓝色条中),但在“可见性超时”阶段(第二个蓝色条)的消息并不多


这两个蓝色条都算作“机上”信息吗?或者一条消息在被
ReceiveMessage
请求“接收”后(在图表底部“message returned”的右侧)仅为“inflight”(在飞行中)?

掉入延迟队列的消息不会立即被计为“In Flight”(在飞行中),因为任何消费者都看不到它们。它们不被计算为“可用”或“飞行中”,它们只是对您不可见

您可以在AWS SQS控制台上通过一个简单的实验来验证这一点:

  • 创建一个延迟队列,并在SQS控制台中打开两个选项卡
  • 通过右键单击队列并选择“发送消息”,将多条消息放入延迟队列——您应该注意,这些消息在延迟到期之前不会被视为“可用”或“正在传输”,此时它们将变为“可用”
正如文档中所说,消息在被接收后(在某些应用程序处理消息时)但在被删除之前是“在飞行中”的。如果在应用程序使用完它们后未将其删除,它们将返回到“可用”状态

您可以在AWS SQS控制台上进行第二次实验来验证这一点:

  • 打开AWS SQS控制台的两个选项卡。在延迟队列中创建一些消息,并等待它们可用
  • 在第一个选项卡中,右键单击队列并选择“查看/删除消息”。在本实验中,“查看/删除消息”对话框类似于您的应用程序——它在查看队列消息时处理队列消息。将“轮询消息队列”文本字段设置为足够长的持续时间,然后开始轮询消息。如果您的消息可用,它们应立即显示
  • 在第二个选项卡中,刷新SQS控制台。您应该注意到这些消息现在处于“飞行中”,因为这些消息是在您在“其他”选项卡中查看它们时收到的
由于“正在运行”的消息是应用程序当前正在处理的消息,因此该列中的队列消息深度实际上不应该增长太大。在处理完邮件后删除它们(或者重试->适当处理,然后删除/移动到另一个队列以处理异常),您应该可以