code: def consume(self, callback=None, queue='', consumer_tag='',
                  exclusive=False, no_ack=False, no_local=False, arguments=None):
          
          if not compatibility.is_string(queue):
              raise AMQPInvalidArgument('queue should be a string')
          elif not compatibility.is_string(consumer_tag):
              raise AMQPInvalidArgument('consumer_tag should be a string')
          elif not isinstance(exclusive, bool):
              raise AMQPInvalidArgument('exclusive should be a boolean')
          elif not isinstance(no_ack, bool):
              raise AMQPInvalidArgument('no_ack should be a boolean')
          elif not isinstance(no_local, bool):
              raise AMQPInvalidArgument('no_local should be a boolean')
          elif arguments is not None and not isinstance(arguments, dict):
              raise AMQPInvalidArgument('arguments should be a dict or None')
          consume_rpc_result = self._consume_rpc_request(arguments, consumer_tag,
                                                         exclusive, no_ack,
                                                         no_local, queue)
          tag = self._consume_add_and_get_tag(consume_rpc_result)
          self._channel._consumer_callbacks[tag] = callback
          return tag
docs: Start a queue consumer.
  
          :param function callback: Message callback
          :param str queue: Queue name
          :param str consumer_tag: Consumer tag
          :param bool no_local: Do not deliver own messages
          :param bool no_ack: No acknowledgement needed
          :param bool exclusive: Request exclusive access
          :param dict arguments: Consume key/value arguments
  
          :raises AMQPInvalidArgument: Invalid Parameters
          :raises AMQPChannelError: Raises if the channel encountered an error.
          :raises AMQPConnectionError: Raises if the connection
                                       encountered an error.
  
          :returns: Consumer tag
          :rtype: str