async def consume_queue(self, subscriber: AbstractSubscriber) -> None:

        """
        Subscribe to the queue consuming.

        :param subscriber:
        :return:
        """

        queue_name = subscriber.name
        topics = subscriber.requested_topics

        if queue_name in self._known_queues:
            raise exceptions.ConsumerError("Queue '%s' already being consumed" % queue_name)

        await self._declare_queue(queue_name)

        # TODO: There is a lot of room to improvement here. Figure out routing done the right way
        for key in topics:
            self._routing.setdefault(key, set())
            if subscriber in self._routing[key]:
                logger.warning("Subscriber '%s' already receiving routing_key '%s'", subscriber, key)
                break
            await self._bind_key_to_queue(key, queue_name)
            self._routing[key].add(subscriber)

        logger.info("Consuming queue '%s'", queue_name)
        await asyncio.wait_for(
            self._channel.basic_consume(callback=self._on_message, queue_name=queue_name),
            timeout=10
        )
        self._add_to_known_queue(queue_name)
Subscribe to the queue consuming.

        :param subscriber:
        :return: