gpt4 book ai didi

amazon-web-services - 延迟队列消息在SQS中是否算作 "In Flight"?

转载 作者:行者123 更新时间:2023-12-04 07:22:53 25 4
gpt4 key购买 nike

我正在开发一个打算使用an Amazon SQS Delay Queue的项目。

我在准确理解“飞行中”消息的含义方面有些麻烦。

文档中有一条注释,内容为:

Note

There is a 120,000 limit for the number of inflight messages per queue. Messages are inflight after they have been received by the queue, but have not yet been deleted from the queue. If you reach the 120,000 limit, you will receive an OverLimit error message from Amazon SQS. To help avoid reaching the limit, you should delete the messages from the queue after they have been processed. You can also increase the number of queues you use to process the messages.



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

我会故意延迟很多消息(在该图的第一个蓝色条中),而在“可见性超时”阶段(第二个蓝色条)中则没有多少。

两个蓝色条都算作“飞行中”消息吗?还是消息仅在被 ReceiveMessage请求“接收”之后(在图表底部的“返回的消息”右侧)才“在飞行中”?

最佳答案

丢弃到“延迟队列”中的消息不会立即被视为“正在运行”,因为它们对任何使用者都是不可见的。它们不会被视为“可用”或“在飞行中”,只是您看不到它们。

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

  • 创建一个延迟队列,并向SQS控制台打开两个选项卡。
  • 通过右键单击队列并选择“发送消息”,将几条消息放入延迟队列中-您应注意,直到延迟过期,这些消息才被视为“可用”或“在飞行中”成为“可用”。

  • 如文档所述,消息在收到(正在由某些应用程序处理)之后但被删除之前处于“运行中”状态。如果在应用程序完成操作后仍未删除它们,则它们将返回“可用”状态。

    您可以通过AWS SQS控制台上的第二个实验来验证这一点:
  • 打开AWS SQS控制台的两个选项卡。在您的延迟队列中创建一些消息,然后等待它们变为可用。
  • 在第一个选项卡中,右键单击队列,然后选择“查看/删除消息”。在此实验中,“查看/删除消息”对话框类似于您的应用程序-它在查看队列消息时正在处理它。将“消息的轮询队列”文本字段设置为足够长的持续时间,然后开始轮询消息。如果您的消息可用,它们应该立即出现。
  • 在第二个选项卡中,刷新SQS控制台。您应该注意到这些消息现在处于“运行中”状态,因为在另一个选项卡中查看消息时已经收到了这些消息。

  • 由于“正在运行”消息是应用程序当前正在处理的消息,因此该列中的队列消息深度实际上不应增长得太大。处理完消息后删除消息(或重试->适当处理,然后删除/移动到另一个队列以处理异常),您应该可以。

    关于amazon-web-services - 延迟队列消息在SQS中是否算作 "In Flight"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21892950/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com