繁体   English   中英

从SQS收到的消息数

[英]Number of messages received from SQS

使用Amazon的SQS及其PHP SDK,我可以接收消息并删除它们,但是如果没有收到消息,尝试遍历消息时会收到错误消息。 如果有一种方法可以在我的foreach语句之前检查消息数,则可以避免任何错误。 显然,我可以抑制该错误,并且一切都会顺利进行,但我不希望这样做。

$result = $sqs->receiveMessage(array(
            'QueueUrl' => SQS_QUEUE,
            'MaxNumberOfMessages' => 10 ));

foreach ($result->get('Messages') as $message) {
    if (process_sqs($message['Body'])) {
        $deletemessage = $sqs->deleteMessage(array(
            'QueueUrl' => SQS_QUEUE,
            'ReceiptHandle' => $message['ReceiptHandle']));
    }
}

基本上,在填充$ result之后,我想查询接收到的消息数,如果超过0,则继续执行foreach语句。

我知道我可以在receiveMessage之前使用GetQueueAttributes来获取队列中消息数量的估计,但是我看到无需提出额外的请求,而又不能保证我会实际收到任何消息。

谢谢

您可以使用PHP对数组进行计数,然后再使用count()函数进行遍历:

$messages = $result->get('Messages');

if (count($messages) > 0) {

    foreach ...

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM