2014-08-31 2 views
0

SQS의 다양한 예제와 비슷한 코드가 있습니다.빈 대기열이있는 PHP에서 AWS 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에 대한 응답에는 대기열이 없기 때문에 의미가없는 메시지가 없습니다. 행운과 나는 또한 $messages['Messages']$messages->get('Messages') 시도 한 foreach에서

Guzzle\Service\Resource\Model Object ([structure:protected] => [data:protected] => Array ([ResponseMetadata] => Array ([RequestId] => 96a63acb-685c-5e42-a68b-76b7ea4ff16b))) 

모든 : 여기에 무엇 인 print_r ($ 메시지)를 표시합니다.

AWS 외부의 시스템에서이 작업을 실행하고 있지만 인증을 위해 키/암호를 사용합니다.

감사합니다.

+0

(적어도) 나는'추가 한 경우 (는 isset ($ 메시지 [ '메시지'])!의) 는 "어떤 메시지
"를 에코하지를; else '앞에 foreach. –

+0

이것은 나에게 도움이되었습니다. http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-models.html –

답변

0

또한 시도 할 수 있습니다 : 지금은

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