code: def subscribe(self, channel, callback, **kwargs):
          
          self.__subscription_id += 1
  
          def mangled_callback(header, message):
              return callback(header, self._mangle_for_receiving(message))
  
          if "disable_mangling" in kwargs:
              if kwargs["disable_mangling"]:
                  mangled_callback = callback
              del kwargs["disable_mangling"]
          self.__subscriptions[self.__subscription_id] = {
              "channel": channel,
              "callback": mangled_callback,
              "ack": kwargs.get("acknowledgement"),
              "unsubscribed": False,
          }
          self.log.debug("Subscribing to %s with ID %d", channel, self.__subscription_id)
          self._subscribe(self.__subscription_id, channel, mangled_callback, **kwargs)
          return self.__subscription_id
docs: Listen to a queue, notify via callback function.
          :param channel: Queue name to subscribe to
          :param callback: Function to be called when messages are received.
                           The callback will pass two arguments, the header as a
                           dictionary structure, and the message.
          :param **kwargs: Further parameters for the transport layer. For example
                 disable_mangling: Receive messages as unprocessed strings.
                 exclusive: Attempt to become exclusive subscriber to the queue.
                 acknowledgement: If true receipt of each message needs to be
                                  acknowledged.
          :return: A unique subscription ID