docs: def execute(self, message_in, measurement):
          """Process the message from RabbitMQ. To implement logic for processing
          a message, extend Consumer._process, not this method.
  
          This for internal use and should not be extended or used directly.
  
          :param message_in: The message to process
          :type message_in: :class:`rejected.data.Message`
          :param measurement: For collecting per-message instrumentation
          :type measurement: :class:`rejected.data.Measurement`
  
          """
          self.logger.debug('Received: %r', message_in)
  
          try:
              self._preprocess(message_in, measurement)
          except DropMessage:
              raise gen.Return(data.MESSAGE_DROP)
          except MessageException as exc:
              raise gen.Return(self._on_message_exception(exc))
  
          try:
              yield self._execute()
          except ExecutionFinished as exc:
              self.logger.debug('Execution finished early')
              if not self._finished:
                  self.on_finish(exc)
  
          except RabbitMQException as exc:
              self._handle_exception(exc)
              raise gen.Return(data.RABBITMQ_EXCEPTION)
  
          except ConfigurationException as exc:
              self._handle_exception(exc)
              raise gen.Return(data.CONFIGURATION_EXCEPTION)
  
          except ConsumerException as exc:
              self._handle_exception(exc)
              raise gen.Return(data.CONSUMER_EXCEPTION)
  
          except MessageException as exc:
              raise gen.Return(self._on_message_exception(exc))
  
          except ProcessingException as exc:
              self._handle_exception(exc)
              self._republish_processing_error(
                  exc.metric or exc.__class__.__name__)
              raise gen.Return(data.PROCESSING_EXCEPTION)
  
          except (NotImplementedError, Exception) as exc:
              self._handle_exception(exc)
              raise gen.Return(data.UNHANDLED_EXCEPTION)
  
          else:
              self._finished = True
  
          self._maybe_clear_confirmation_futures()
          raise gen.Return(data.MESSAGE_ACK)