首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQS中,延迟队列消息是否算作“在飞行中”?

在SQS中,延迟队列消息是否算作“在飞行中”?
EN

Stack Overflow用户
提问于 2014-02-19 21:34:13
回答 1查看 3.2K关注 0票数 12

我正在进行一个项目,我打算在其中使用一个Amazon延迟队列

我有点难以理解“飞行”信息的确切含义。

文件中有一条注释说:

Note 每个队列的inflight消息数量有12万条限制。消息已被队列接收,但尚未从队列中删除。如果达到120,000的限制,您将收到来自Amazon的OverLimit错误消息。为了避免达到限制,您应该在消息处理完后从队列中删除它们。还可以增加用于处理消息的队列数。

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

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

这两个蓝色的条形是否都算作“飞行”信息?还是一条消息被ReceiveMessage请求“接收”后(在图表底部的“消息返回”的右边)仅是"inflight“?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-19 22:03:25

被丢弃到延迟队列中的消息不会立即被计算为“在飞行中”,因为它们对任何消费者都是不可见的。它们不算“可用”或“飞行中”,只是你看不见而已。

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

  • 创建一个延迟队列,并将两个选项卡打开到SQS控制台。
  • 右击队列并选择“发送消息”,将多条消息放入延迟队列--您应该注意到,在延迟过期之前,这些消息并不算为“可用”或“在航班中”,这时它们就变得“可用”了。

如文档所述,消息在收到后(在被某些应用程序处理时),但在被删除之前“处于飞行中”。如果它们在应用程序完成后没有被删除,它们将返回到“可用”状态。

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

  • 打开AWS SQS控制台的两个选项卡。在延迟队列中创建一些消息,并等待它们可用。
  • 在第一个选项卡中,右键单击队列并选择“查看/删除消息”。在本实验中,“查看/删除消息”对话框类似于您的应用程序--它在查看队列消息时处理队列消息。将"Poll queue for messages“文本字段设置为足够长的持续时间,并开始对消息进行轮询。如果您的邮件可用,则应立即显示它们。
  • 在第二个选项卡中,刷新SQS控制台。您应该注意到,这些消息现在“处于飞行状态”,因为您在另一个选项卡中查看消息时已经收到消息。

因为您的“在飞行”消息是您的应用程序目前正在处理的消息,所以该列中的队列消息深度不应该实际增长很大。在处理消息后删除它们(或重试->适当处理,然后删除/移动到另一个队列以处理异常),您应该会没事的。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21892950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档