<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def receive_messages_iter_async(self, on_message_received=None):
 """Receive messages by asynchronous generator. Messages returned in the generator have already been accepted - if you wish to add logic to accept or reject messages based on custom criteria, pass in a callback. If the receive client is configured with `auto_complete=True` then the messages received from the iterator returned by this function will be automatically settled when the iterator is incremented. Alternatively, if `auto_complete=False`, then each message will need to be explicitly settled before it expires and is released. :param on_message_received: A callback to process messages as they arrive from the service. It takes a single argument, a ~uamqp.message.Message object. :type on_message_received: callable[~uamqp.message.Message] :rtype: Generator[~uamqp.message.Message] """

        self._message_received_callback = on_message_received
        self._received_messages = queue.Queue()
        return AsyncMessageIter(self, auto_complete=self.auto_complete)