/** * 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); }