Модуль 2. Состояния и гарантии · Урок 3 из 7
Урок 3. Retained: сохранённое значение и его актуальность
Почему вновь открытая панель сразу видит старую температуру.
Чему вы научитесь
Объяснять отличие сохранённого значения от нового сообщения датчика.
Что сохраняет брокер
Для конкретной темы брокер может хранить последнее retained-сообщение. После новой подходящей подписки оно может быть доставлено клиенту сразу, без нового измерения. Это удобно для отображения текущего известного значения, но оно не гарантирует, что источник сейчас включён.
Последнее retained-сообщение — это запись последнего опубликованного значения, а не постоянный опрос датчика брокером. Если датчик не передавал показания час, сохранённая температура не стала свежей.
Что выбрать для команд и показаний
Нужно отдельно проектировать темы состояний и команд. Для ряда состояний retained полезен, но применение его к командам управления без понимания последствий может привести к неожиданному действию при повторной подписке. Правила зависят от архитектуры и должны проходить тест на безопасность.
При публикации retained-сообщения с нулевой длиной payload стандарт допускает удаление сохранённого сообщения для темы. Наш учебный тренажёр показывает только сохранение и повторную доставку непустого значения.
Контроль возраста сообщения
Чтобы отличить свежие данные от старых, используйте отдельно временную метку, heartbeat или признак доступности, если соответствующая интеграция и устройство его поддерживают. Сам retained-флаг не сообщает время последнего измерения.
Практическая работа
В тренажёре опубликуйте температуру с retain без подписчика, затем оформите подписку: наблюдайте немедленную доставку. Отключите датчик в вашей воображаемой схеме и ответьте, почему значение остаётся видимым.
Составьте два случая, когда retained полезен, и один случай, когда его использование для команды нежелательно.
Самопроверка: сформулируйте результат своими словами, а затем пройдите вопросы ниже. Если устройство или программа не доступны, выполните задание на бумаге или в учебном тренажёре.
Проверьте себя
Контрольные вопросы
Ответьте на все вопросы. При ошибке изучите пояснение и попробуйте ещё раз. Все задания бесплатны.
Retained хранит последнее опубликованное сообщение.
Брокер способен отправить сохранённое значение сразу после подписки.
Правильных ответов: 0 из 2
Урок завершён?
Повторите ключевые идеи и убедитесь, что выполнили практическое задание.
Чтобы закончить урок, правильно ответьте на контрольный вопрос.