def receive_loop_with_callback(self, queue_name, callback):
        """
        Process incoming messages with callback until close is called.
        :param queue_name: str: name of the queue to poll
        :param callback: func(ch, method, properties, body) called with data when data arrives
        :return:
        """
        self.connect()
        channel = self.create_channel(queue_name)
        channel.basic_qos(prefetch_count=1)
        channel.basic_consume(callback, queue=queue_name)
        channel.start_consuming()