/** * Start a consumer that retrieved documents that have to be saved to the index. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * * @return integer */ protected function execute(InputInterface $input, OutputInterface $output) { $this->queue->listen(function ($message) { if (strlen($message->body) == 0) { $this->queue->rejectMessage($message); return; } $data = json_decode($message->body, true); $this->indexer->prepareDocument($message); $this->queue->acknowledge($message); }); return 1; }
public function testListen() { $queueName = 'queue2'; $callback = new QueueCallableClass(); $channel = $this->getChannel($queueName, true); $channel->expects($this->once())->method('basic_consume')->with($this->equalTo($queueName), $this->equalTo(''), $this->equalTo(false), $this->equalTo(false), $this->equalTo(false), $this->equalTo(false), $callback); $connection = $this->getMockBuilder('PhpAmqpLib\\Connection\\AMQPConnection')->disableOriginalConstructor()->setMethods(['channel', 'isConnected', 'close'])->getMock(); $connection->expects($this->once())->method('channel')->will($this->returnValue($channel)); $connection->expects($this->once())->method('isConnected')->will($this->returnValue(true)); $connection->expects($this->once())->method('close'); $queue = new Queue($connection, $queueName); $queue->listen($callback); }
/** * Starts to listen to the queue and grabs the messages from the queue to crawl url's. * * It should endless keep listening to the queue, if the listen function stops, something went wrong * so a non-zero integer is returned to indicate something went wrong. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * * @return integer */ protected function execute(InputInterface $input, OutputInterface $output) { $this->queue->listen([$this, 'crawlUrl']); return 1; }