SQS队列在一定时间后不为空时报警?

Alarm when SQS Queue is not Empty After Certain Time?

用例

我们有 1 个 sqs 正在被 lambda 使用,我们想知道在某个时间戳后是否所有 sqs 中的消息都已被使用。

例如,其他一些系统会从早上 6 点开始向 SQS 发送消息,lambda 需要 4 个小时才能处理完所有消息。我们想知道在上午 10 点,队列中的所有消息是否已被消费。
而我们每天只需要检测一次sqs的深度即可。

问题。

有没有一种简单的方法可以在 cloudwatch 中设置警报来实现我们的用例?

有许多潜在的解决方案,例如使用 cloudwatch 规则触发 lambda 并检测队列的大小和发送指标。我们可以对指标发出警报,但这似乎是一项繁重的工作

欢迎任何反馈!

谢谢

持续检查

您可以针对队列的 ApproximateNumberOfMessagesVisible 指标创建 Amazon CloudWatch 警报。

例如,如果您希望在过去一小时内队列未为空时收到通知,您可以在 ApproximateNumberOfMessagesVisible 的最小值 > 0 持续 60 分钟时创建警报。这表示过去一小时队列中的最小消息数大于零。

在特定时间检查

如果您想在特定时间检查队列长度,您需要使用 Amazon CloudWatch Events 触发 AWS Lambda 函数 在给定的时间。

Lambda 函数可以调用 get_queue_attributes() 来检索 ApproximateNumberOfMessages。如果这比预期的要大,Lambda 函数可以将消息发送到 Amazon SNS 主题。用户可以订阅主题以接收电子邮件或短信通知。