amazon-web-services - 检查SQS队列是否为空的有效方法

标签 amazon-web-services amazon-sqs

我有一个 SQS Queue多个主机从中读取消息。我想在处理完队列中的所有消息后运行一些作业(业务逻辑)。

如何检查队列是否为空?

是的,我可以查询 ApproximateNumberOfMessagesApproximateNumberOfMessagesNotVisible队列属性,但这些是近似数字。我想在没有消息时停止我的主机轮询队列中的消息,然后运行所需的作业。

有任何想法吗?谢谢

最佳答案

您可以在轮询时简单地注意到来自 API 响应的空接收。关于 CloudWatch,还有另一个指标更适合于此。来自 documentation :

NumberOfEmptyReceives

The number of ReceiveMessage API calls that did not return a message.

Units: Count

Valid Statistics: Average, Minimum, Maximum, Sum, Data Samples (displays as Sample Count in the Amazon SQS console)



一些额外的信息:
  • 此指标仅每 5 分钟填充一次。如果您根据此指标设置闹钟,这意味着您的最短时间应为 5 分钟。
  • Sum 是最适合您的用例的统计数据。如果 NumberOfEmptyReceives > 0,您的轮询作业会检查队列并且未收到任何消息。

  • 我个人使用这个指标来设置一个 cloudwatch 警报,该警报将在连续几个时期的 NumberOfEmptyReceives > 0 的总和之后缩小托管我的轮询作业的自动缩放组。我喜欢做连续的周期,因为它更明显地表明队列不仅是空的,而且一直是空的。

    关于amazon-web-services - 检查SQS队列是否为空的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144778/

    相关文章:

    amazon-web-services - 如何为 AWS Lambda 设置重试超时

    spring - 可以将消息推送到 aws sqs 的最大速率是多少?

    amazon-web-services - 如何使用第三方应用程序登录亚马逊 mws

    ios - Amazon SQS/SNS 策略错误

    integration-testing - 应用程序无法连接到 localstack SQS

    amazon-web-services - Amazon SQS 队列限制

    AWS Linux 服务器上的 PHPMailer 超时

    json - AWS Data Pipeline - 在创建 EMR 期间设置 Hive 站点值

    .net - 是否有适用于 AWS 的高级 .Net SDK?

    amazon-web-services - 应用 AWS IAM 策略后我应该等待多长时间才能生效?