SQS:获取可用消息

SQS: Get Message Available

我正在编写脚本 limit/control 每个队列达到特定阈值时的消息数量。我想在向队列中添加更多消息之前读取队列中有多少可用消息。

示例: 用户将在几分钟后收到一条错误消息以重试,因为当队列中有大约 100 条待处理的消息时服务器正忙于处理消息,并且当队列中的待处理消息低于 30 条时它将再次接受消息..

我正在查看 SQS PHP 方法,但我没有看到任何方法来查看队列的当前大小或工作人员的可用消息 - http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.Sqs.SqsClient.html

有什么方法可以读取队列中可用的消息吗?

使用client.getQueueAttributes('ApproximateNumberOfMessages')

顺便说一句,排队的全部目的不是担心机器碰巧有多忙——只需将消息添加到队列中,它们最终就会得到处理。一定要警告用户这可能需要一段时间,但这并不意味着您不应该让他们提出请求。

如果队列非常大,请考虑增加更多的并行处理能力,例如通过 Auto Scaling 添加额外的 EC2 实例。