Retained MQTT хранит последнее значение темы, а не историю событий
Фотография конкретного исполнения не приложена.
Новый subscriber может сразу получить ранее опубликованное значение без ожидания следующего измерения. Это полезно для состояния оборудования. Однако такой механизм нельзя считать архивом всех сообщений за время отсутствия клиента.
RETAIN позволяет серверу хранить последнее retained-сообщение соответствующей темы для предусмотренной выдачи новым подпискам. Оно не является частью session конкретного subscriber. Удаление session поэтому не равнозначно очистке retained state всего broker.
Публикация retained-сообщения с нулевым payload удаляет сохранённое значение по правилам стандарта. Это отличается от обычного полезного значения «ноль» внутри формата приложения. Также наличие сохранённой записи не гарантирует, что измерение ещё актуально: время и допустимую свежесть нужно определить отдельно.
В приёмке проверяют первую подписку, замену retained-значения и его предусмотренное удаление. Отдельно проверяют очередь сохранённой offline-session. Отчёт должен показывать, какой механизм доставил каждое сообщение. Немедленно полученное состояние после reconnect не доказывает, что клиенту передали все события, произошедшие во время его отсутствия.
Основание — MQTT Version5.0 OASIS Standard07March2019, official os HTML edition, разделы MQTT5.0 3.3.1.3 RETAIN;4.1 Session State. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — MQTT Version 5.0, OASIS Standard от 7 марта 2019 года. Поддержка возможностей конкретными broker и client library, дисковое хранение и политика доступа не проверялись. Соединения, подписки, сообщения и настройки рабочих систем не выполнялись; приведены критерии будущей приёмки.