Amazon web services 在空SQS队列上调用receive_message()时会发生什么?

Amazon web services 在空SQS队列上调用receive_message()时会发生什么?,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我试图计算一个PHP进程在一个空的AWS SQS队列上调用receive_message()的次数。现在,我通过计算每次未设置MessageID时队列为空的次数使其工作。有没有更直接的检查方法 如果您确实想知道在空AWS SQS队列上调用receive_message()的次数,则必须使用长轮询。因为即使SQS队列中有消息,短轮询也有可能返回空列表。原因是,在短期轮询中,AWS只轮询服务器的子集,即使队列中存在消息,但驻留在循环期间未轮询的服务器中,AWS也可能空手返回 有关长轮询和短轮询的更

我试图计算一个PHP进程在一个空的AWS SQS队列上调用receive_message()的次数。现在,我通过计算每次未设置MessageID时队列为空的次数使其工作。有没有更直接的检查方法


如果您确实想知道在空AWS SQS队列上调用receive_message()的次数,则必须使用长轮询。因为即使SQS队列中有消息,短轮询也有可能返回空列表。原因是,在短期轮询中,AWS只轮询服务器的子集,即使队列中存在消息,但驻留在循环期间未轮询的服务器中,AWS也可能空手返回

有关长轮询和短轮询的更多详细信息


您可以检查返回的列表大小是否为零,以确定是否对空的AWS SQS调用了receive_message()

如果查询在任何消息可用之前超时,我希望返回一个零消息数组。
if(!isset($sqsMessage->body->ReceiveMessageResult->Message->MessageId)) {
    //Log empty call here
}