/**
  * Get messages in the queue.
  *
  * @param int|null             $maxMessages Maximum number of messages to return
  * @param int|null             $timeout     Visibility timeout for these messages
  * @param null|ZendQueue\Queue $queue
  *
  * @return ZendQueue\MessageIterator
  */
 public function receive($maxMessages = null, $timeout = null, Queue $queue = null)
 {
     $result = [];
     if ($queue === null) {
         $queue = $this->_queue;
     }
     $maxMessages = (int) $maxMessages ? (int) $maxMessages : 1;
     // default approach: GET
     for ($i = $maxMessages; $i > 0; --$i) {
         $amqpMessage = $this->channel->basic_get($queue->getName());
         if (isset($amqpMessage->delivery_info['delivery_tag'])) {
             $result[] = ['body' => $amqpMessage->body, 'amqpMessage' => $amqpMessage];
             $this->_count = $amqpMessage->delivery_info['message_count'];
         }
     }
     $options = ['queue' => $queue, 'data' => $result, 'messageClass' => $queue->getMessageClass()];
     $classname = $queue->getMessageSetClass();
     return new $classname($options);
 }