AWS SQS错误检索PHP中带有空队列的消息
问题描述:
我有类似于SQS上各种示例的代码。AWS SQS错误检索PHP中带有空队列的消息
$sqs = \Aws\Sqs\SqsClient::factory(array(
'key'=>'MYKEY',
'secret'=>'MYSECRET',
'region' => 'us-east-1'
));
$queueURL = 'https://sqs.us-east-1.amazonaws.com/MYUSERID/MYQUEUENAME';
$messages = $sqs->receiveMessage(array('QueueUrl' => $queue));
print_r($messages);echo '<BR>';
foreach ($messages->getPath('Messages') as $message) {
// Do something with the message
echo $message;
}
但是,我收到了每条线的错误:Warning: Invalid argument supplied for foreach()
。对receiveMessage的响应没有消息,这是合理的,因为队列是空的。这里是什么的print_r($消息)显示:
Guzzle\Service\Resource\Model Object ([structure:protected] => [data:protected] => Array ([ResponseMetadata] => Array ([RequestId] => 96a63acb-685c-5e42-a68b-76b7ea4ff16b)))
在foreach
我自己也尝试$messages['Messages']
和$messages->get('Messages')
,都没有运气。
我在AWS以外的系统上运行此操作,但使用密钥/秘密进行身份验证。
谢谢!
答
你还可以尝试:
if ($messages->getPath('Messages')) {
foreach ($messages->getPath('Messages') as $message) {
echo "Received: ".$message['Body'];
}
}
现在(至少)我已经加入'如果(isset($消息[ '消息'])!) 回声 “没有消息
”; 其他'在foreach前面。 – 2014-08-31 05:49:23
这对我很有帮助。 http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-models.html – 2014-08-31 16:25:41