'Non-blocking single message get and ACK from a queue by name.
Internally this method uses :meth:`_get` to fetch the message. If
an :class:`~qpid.messaging.exceptions.Empty` exception is raised by
:meth:`_get`, this method silences it and returns None. If
:meth:`_get` does return a message, that message is ACKed. The no_ack
parameter has no effect on ACKing behavior, and all messages are
ACKed in all cases. This method never adds fetched Messages to the
internal QoS object for asynchronous ACKing.
This method converts the object type of the method as it passes
through. Fetching from the broker, :meth:`_get` returns a
:class:`qpid.messaging.Message`, but this method takes the payload
of the :class:`qpid.messaging.Message` and instantiates a
:class:`~kombu.transport.virtual.Message` object with the payload
based on the class setting of self.Message.
:param queue: The queue name to fetch a message from.
:type queue: str
:keyword no_ack: The no_ack parameter has no effect on the ACK
behavior of this method. Un-ACKed messages create a memory leak in
qpid.messaging, and need to be ACKed in all cases.
:type noack: bool
:return: The received message.
:rtype: :class:`~kombu.transport.virtual.Message`'

def basic_get(self, queue, no_ack=False, **kwargs):

    try:
        qpid_message = self._get(queue)
        raw_message = qpid_message.content
        message = self.Message(raw_message, channel=self)
        self.transport.session.acknowledge(message=qpid_message)
        return message
    except Empty:
        pass
