Exemple #1
0
 /**
  * Receive Message
  *
  * @return Message
  */
 public function receiveMessage()
 {
     $visibilityTimeout = $this->getVisibilityTimeout();
     if ($visibilityTimeout > 43200) {
         // TODO: Post warning in sentry
         $visibilityTimeout = 43200;
     }
     while (true) {
         try {
             $result = $this->sqs->receiveMessage(array('QueueUrl' => $this->getQueueUrl(), 'MaxNumberOfMessages' => 1, 'WaitTimeSeconds' => 20, 'VisibilityTimeout' => $visibilityTimeout));
         } catch (SqsException $e) {
             if ($e->getExceptionCode() === 'AWS.SimpleQueueService.NonExistentQueue') {
                 $this->createQueueIfNotExists($this->getQueueName());
                 continue;
             }
             throw $e;
         }
         $data = $result->getPath('Messages/0');
         if ($data) {
             break;
         }
     }
     $message = new Message(base64_decode($data['Body']), $data['MessageId']);
     $message->setHandle($data['ReceiptHandle']);
     return $message;
 }