Will Delay MQTT: конец сессии способен опередить задержку уведомления
Фотография конкретного исполнения не приложена.
Краткий обрыв сети не всегда должен превращаться в тревогу о длительном отказе устройства. Will Delay помогает отложить сообщение, но его действие связано с жизненным циклом session. Настройка одного большого числа не гарантирует соответствующее время ожидания.
Стандарт предписывает публикацию Will после истечения Will Delay либо завершения session — что наступит раньше. Продолжение той же session до истечения задержки может подавить отложенную Will. Новый Clean Start способен изменить этот сценарий, завершив прежнее состояние.
Will также не является точным timestamp физического отказа устройства. Сначала сервер обнаруживает разрыв по своим условиям, затем применяются правила публикации. Нормальный DISCONNECT и предусмотренные reason codes имеют отдельную семантику, которую нельзя подменить общим ожиданием offline.
В приёмке проверяют короткий обрыв с продолжением session, истечение expiry и длительное отсутствие. Сопоставляют CONNECT, DISCONNECT и время Will. Отчёт должен объяснять фактическую задержку уведомления. Только настроенный Will Delay не доказывает, что тревога возникнет ровно через этот срок после исчезновения питания у клиента.
Основание — MQTT Version5.0 OASIS Standard07March2019, official os HTML edition, разделы MQTT5.0 3.1.2.5 Will;3.1.3.2.2 Will Delay Interval. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — MQTT Version 5.0, OASIS Standard от 7 марта 2019 года. Поддержка возможностей конкретными broker и client library, дисковое хранение и политика доступа не проверялись. Соединения, подписки, сообщения и настройки рабочих систем не выполнялись; приведены критерии будущей приёмки.