[英]AWS SQS error retrieving messages in PHP with empty queue
I have code that is similar to various examples on 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;
}
However, I am getting an error in the foreach line: Warning: Invalid argument supplied for foreach()
. 但是,我在foreach行中遇到错误:
Warning: Invalid argument supplied for foreach()
。 The response to receiveMessage has no Messages, which makes sense because the queue is empty. 对receiveMessage的响应没有消息,这是有道理的,因为队列为空。 Here is what print_r($messages) displays:
这是print_r($ messages)显示的内容:
Guzzle\Service\Resource\Model Object ( [structure:protected] => [data:protected] => Array ( [ResponseMetadata] => Array ( [RequestId] => 96a63acb-685c-5e42-a68b-76b7ea4ff16b ) ) )
In the foreach
I have also tried $messages['Messages']
and $messages->get('Messages')
, all with no luck. 在
foreach
我还尝试了$messages['Messages']
和$messages->get('Messages')
,但都没有运气。
I am running this on a system that is outside of AWS but uses the key/secret for auth. 我在AWS之外但使用密钥/秘密进行身份验证的系统上运行此代码。
Thanks! 谢谢!
You can also try: 您也可以尝试:
if ($messages->getPath('Messages')) {
foreach ($messages->getPath('Messages') as $message) {
echo "Received: ".$message['Body'];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.