public function testInvoke() { $queue = $this->prophesize(Queue::class); $callable = $this->prophesize(ConsumerInterface::class); $libMessage = $this->prophesize(\AMQPEnvelope::class); $message = $this->prophesize(Message::class); $messageMapper = $this->prophesize(MessageMapper::class); $messageMapper->toMessage($libMessage->reveal())->shouldBeCalled()->willReturn($message); $callable->__invoke($message->reveal(), $queue->reveal())->shouldBeCalled(); $consumerCallback = new ConsumerCallback($callable->reveal(), $queue->reveal()); $consumerCallback->setMessageMapper($messageMapper->reveal()); $consumerCallback($libMessage->reveal()); }
/** * Consume messages from a queue (blocking function). * * @param callback|ConsumerInterface|null $callback A callback function to which the * consumed message will be passed. * @param bool $noLocal * @param bool $autoAck * @param bool $exclusive * @param string $consumerTag A string describing this consumer. Used * for canceling subscriptions with cancel(). * @return $this * @throws \AMQPChannelException * @throws \AMQPConnectionException */ public function consume(callable $callback = null, $noLocal = false, $autoAck = false, $exclusive = false, $consumerTag = null) { $consumerCallback = null; if ($callback) { $consumerCallback = new ConsumerCallback($callback, $this); $consumerCallback->setMessageMapper($this->getMessageMapper()); } $flags = AMQP_NOPARAM; if ($noLocal) { $flags |= AMQP_NOLOCAL; } if ($autoAck) { $flags |= AMQP_AUTOACK; } if ($exclusive) { $flags |= AMQP_EXCLUSIVE; } $this->getResource()->consume($consumerCallback, $flags, $consumerTag); return $this; }