AWS SQS错误在PHP中使用空队列检索消息

时间:2014-08-31 02:01:49

标签: php amazon-sqs

我的代码类似于SQS上的各种示例。

$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;
}

但是,我在foreach行中收到错误:Warning: Invalid argument supplied for foreach()。对receiveMessage的响应没有消息,这是有道理的,因为队列是空的。这是print_r($ messages)显示的内容:

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以外的系统上运行此功能,但使用密钥/密钥进行身份验证。

谢谢!

1 个答案:

答案 0 :(得分:0)

您也可以尝试:

if ($messages->getPath('Messages')) {
    foreach ($messages->getPath('Messages') as $message) {
        echo "Received: ".$message['Body'];
    }
}