def METHOD_NAME(self):
    if self._last_execution_time is None:
        self._last_execution_time = get_timestamp()
    message_cache = {}
    # Use as an ordered set
    unknown_errors = {}
    while True:
        try:
            payload = self.sub.get(None, pymqi.md(), self._get_options())
        except pymqi.MQMIError as e:
            if not (e.comp == pymqi.CMQC.MQCC_FAILED and e.reason == pymqi.CMQC.MQRC_NO_MSG_AVAILABLE):
                unknown_errors[str(e)] = traceback.format_exc()
                time.sleep(1)
        else:
            message = self.parse_message(payload)
            message_cache[self.get_message_id(message)] = message
        if self._get_elapsed_time() >= SNAPSHOT_UPDATE_INTERVAL:
            break
    tags = [f'subscription:{self.TYPE}', *self.tags]
    if unknown_errors:
        status_message = 'Subscription error for topic string: {}'.format(self.TOPIC_STRING)
        self._submit_health_status(ServiceCheck.CRITICAL, tags, status_message)
        for error in unknown_errors.values():
            self.check.log.error('%s\n%s', status_message, error)
    elif not message_cache:
        status_message = 'Subscription found nothing for topic string: {}'.format(self.TOPIC_STRING)
        self._submit_health_status(ServiceCheck.WARNING, tags, status_message)
        self.check.log.warning(status_message)
    else:
        self._submit_health_status(ServiceCheck.OK, tags)
    messages = list(message_cache.values())
    self.check.gauge('messages.current', len(messages), tags=tags)
    self.check.log.trace('Messages found for subscription type `%s`: %s', self.TYPE, messages)
    self._last_execution_time = get_timestamp()
    return messages