获取Amazon SQS队列中的消息数

Mar*_*mas 6 php amazon-sqs amazon-web-services

只是一个简单的问题,但我找不到答案。

是否可以使用API​​来获取AWS SQS队列的队列大小(等待处理的消息/作业数)?

最好使用cURL或PHP SDK。

elb*_*bik 20

以及一些代码示例:

aws sqs get-queue-attributes --queue-url https://sqs.<region>.amazonaws.com/<accountId>/<SQS name> --attribute-names All


{
    "Attributes": {
        "QueueArn": "arn:aws:sqs:<region>:<accountId>:<SQS name>",
        "ApproximateNumberOfMessages": "0",
        "ApproximateNumberOfMessagesNotVisible": "3",
        "ApproximateNumberOfMessagesDelayed": "0",
        "CreatedTimestamp": "1594729555",
        "LastModifiedTimestamp": "1595845586",
        "VisibilityTimeout": "60",
        "MaximumMessageSize": "262144",
        "MessageRetentionPeriod": "900",
        "DelaySeconds": "0",
        "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:<region>:<accountId>:<DLQ name>\",\"maxReceiveCount\":3}",
        "ReceiveMessageWaitTimeSeconds": "0"
    }
}
Run Code Online (Sandbox Code Playgroud)

获取已定义属性的值:

 aws sqs get-queue-attributes --queue-url https://sqs.<region>.amazonaws.com/<accountId>/<SQS name> --attribute-names VisibilityTimeout ApproximateNumberOfMessages ApproximateNumberOfMessagesNotVisible ApproximateNumberOfMessagesDelayed

{
    "Attributes": {
        "VisibilityTimeout": "60",
        "ApproximateNumberOfMessages": "0",
        "ApproximateNumberOfMessagesNotVisible": "3",
        "ApproximateNumberOfMessagesDelayed": "0"
    }
}
Run Code Online (Sandbox Code Playgroud)

警告

ApproximateNumberOfMessagesDelayed 、 ApproximateNumberOfMessagesNotVisible 和 ApproximateNumberOfMessagesVisible 指标可能要在生产者停止发送消息后至少 1 分钟才能实现一致性。队列元数据需要此时间才能达到最终一致性。


Kee*_*asa 8

您可以检索Attributes of the Queue和查找相关属性(请参阅此链接)。您可能需要查看以下两个属性。

ApproximateNumberOfMessages - 返回队列中可见消息的大致数量

ApproximateNumberOfMessagesNotVisible - 返回未超时且未删除的消息的大致数量。

如果要包含等待添加的消息,也可以考虑以下属性。

ApproximateNumberOfMessagesDelayed - 返回等待添加到队列的大致消息数。

最后对上述属性返回的值进行求和,得到当前队列的大小。


dan*_*ave 6

我相信您正在寻找的是get-queue-attributes,可能正在询问roximateNumberOfMessages属性。