/**
  * @param object $consumer
  *
  * @throws ConsumerException
  */
 public function registerConsumer($consumer)
 {
     $type = gettype($consumer);
     if ($type !== 'object') {
         throw new ConsumerException(sprintf('Expected argument of type "object", "%s" given', $type));
     }
     $consumerContainers = $this->parser->getConsumerMethods($consumer);
     foreach ($consumerContainers as $consumerContainer) {
         $this->registerConsumerContainer($consumerContainer);
     }
 }
 /**
  * @test
  */
 public function register_consumer_should_bind_queues()
 {
     $consumer = new stdClass();
     $binding2 = 'binding2';
     $binding1 = 'binding1';
     $consumerName = 'myName';
     $bindings = [$binding1, $binding2];
     $containerMock = $this->prophesize(ConsumerContainer::class);
     $containerMock->getBindings()->willReturn($bindings);
     $containerMock->getConsumerName()->willReturn($consumerName);
     $containerMock->getPrefetchCount()->willReturn(1);
     $this->parser->getConsumerMethods($consumer)->willReturn([$containerMock]);
     $this->channel->basic_qos($consumerName, 1, false)->shouldBeCalled();
     $this->channel->basic_consume($consumerName, Argument::any(), Argument::any(), Argument::any(), Argument::any(), Argument::any(), Argument::any())->shouldBeCalled();
     $this->channel->queue_declare($consumerName, Argument::any(), Argument::any(), Argument::any(), Argument::any())->shouldBeCalled();
     $this->channel->queue_bind($consumerName, self::EXCHANGE_NAME, $binding1)->shouldBeCalled();
     $this->channel->queue_bind($consumerName, self::EXCHANGE_NAME, $binding2)->shouldBeCalled();
     $this->manager->registerConsumer($consumer);
 }
 /**
  * @test
  * @expectedException \Doctrine\Common\Annotations\AnnotationException
  */
 public function parser_should_throw_exception_when_name_for_consumer_is_not_set()
 {
     $parser = new Parser(new AnnotationReader());
     $consumer = new ConsumerWithInvalidAnnotation();
     $parser->getConsumerMethods($consumer);
 }