def METHOD_NAME(self, notify=False):
    self.notify('Service: %s Starting' % self.name)
    empty_reads = 0
    while self.retry_count < 0 or empty_reads < self.retry_count:
        try:
            input_message = self.read_message()
            if input_message:
                empty_reads = 0
                output_message = ServiceMessage(None, input_message.get_body())
                input_file = self.get_file(input_message)
                results = self.process_file(input_file, output_message)
                self.save_results(results, input_message, output_message)
                self.write_message(output_message)
                self.delete_message(input_message)
                self.cleanup()
            else:
                empty_reads += 1
                time.sleep(self.loop_delay)
        except Exception:
            boto.log.exception('Service Failed')
            empty_reads += 1
    self.notify('Service: %s Shutting Down' % self.name)
    self.shutdown()