/** * @throws AMQPServerException|WrongStateException * @return AMQPIncomingMessage **/ public function getNextDelivery() { if (!$this->consumer instanceof AMQPConsumer) { throw new WrongStateException(); } try { $obj = $this->lookupQueue($this->consumer->getQueueName()); $messages = $obj->consume(array('min' => 1, 'max' => 1, 'ack' => (bool) $this->consumer->isAutoAcknowledge())); } catch (AMQPQueueException $e) { throw new AMQPServerException($e->getMessage(), $e->getCode(), $e); } $this->checkCommandResult(is_array($messages), "Could not consume from queue"); $message = array_shift($messages); $incoming = AMQPIncomingMessage::spawn($message); if ($this->consumer->getConsumerTag() === null) { $this->consumer->setConsumerTag($incoming->getConsumerTag()); $this->consumer->handleConsumeOk($incoming->getConsumerTag()); } else { if ($this->consumer->getConsumerTag() != $incoming->getConsumerTag()) { throw new WrongStateException('Consumer change tag'); } } $this->consumer->handleDelivery($incoming); return $incoming; }
/** * @param AMQPEnvelope $incoming * @return AMQPIncomingMessage */ public static function convert(AMQPEnvelope $incoming) { $data = array(AMQPIncomingMessage::APP_ID => $incoming->getAppId(), AMQPIncomingMessage::BODY => $incoming->getBody(), AMQPIncomingMessage::CONTENT_ENCODING => $incoming->getContentEncoding(), AMQPIncomingMessage::CONTENT_TYPE => $incoming->getContentType(), AMQPIncomingMessage::CORRELATION_ID => $incoming->getCorrelationId(), AMQPIncomingMessage::DELIVERY_TAG => $incoming->getDeliveryTag(), AMQPIncomingMessage::DELIVERY_MODE => $incoming->getDeliveryMode(), AMQPIncomingMessage::EXCHANGE => $incoming->getExchangeName(), AMQPIncomingMessage::EXPIRATION => $incoming->getExpiration(), AMQPIncomingMessage::MESSAGE_ID => $incoming->getMessageId(), AMQPIncomingMessage::PRIORITY => $incoming->getPriority(), AMQPIncomingMessage::REPLY_TO => $incoming->getReplyTo(), AMQPIncomingMessage::REDELIVERED => $incoming->isRedelivery(), AMQPIncomingMessage::PRIORITY => $incoming->getPriority(), AMQPIncomingMessage::ROUTING_KEY => $incoming->getRoutingKey(), AMQPIncomingMessage::TIMESTAMP => $incoming->getTimeStamp(), AMQPIncomingMessage::TYPE => $incoming->getType(), AMQPIncomingMessage::USER_ID => $incoming->getUserId()); return AMQPIncomingMessage::spawn($data); }