Topic Alias MQTT5 после переподключения шлюза
После обрыва сети шлюз восстанавливает соединение, но публикации с сокращённым указанием темы начинают вызывать ошибки. Один возможный предмет проверки — жизненный цикл Topic Alias. Эта оптимизация относится к конкретному сетевому соединению и не должна восприниматься как постоянный справочник имён тем, переживающий любой reconnect.
Уточнить используемую оптимизацию
OASIS MQTT5 ограничивает действие отображений Topic Alias временем сетевого соединения. (OASIS — MQTT Version5.0, Standard2019-03-07) Запишите, выполняет ли управление псевдонимами библиотека автоматически или это делает код приложения. От этого зависит место исправления и состав доступной диагностики, которую нужно сохранить.
Не смешивайте alias с идентификатором устройства или темы в прикладной базе. Его назначение — представление MQTT публикации на данном участке обмена. Один и тот же числовой псевдоним в другом соединении не доказывает связь с прежним полевым датчиком.
Зафиксировать исходную последовательность
На учебном клиенте сохраните установление соединения и первые публикации с известными темами. Проверьте согласованные возможности сторон. Затем найдите, как создаётся отображение и когда клиент начинает использовать его в последующих сообщениях. Не выводите это только из сокращённого вида лога приложения.
Используйте две различимые темы и собственные контрольные значения. Так можно заметить не только явный отказ, но и ошибочную маршрутизацию при неверном состоянии клиента. Приёмник должен связывать публикацию с нужной физической точкой независимо от оптимизации длины заголовка.
Проверить новое соединение
Воспроизведите поддерживаемое переподключение без изменения других параметров. Сравните первые сообщения после него с исходной последовательностью. Ранее созданное отображение не должно использоваться как уже известное новой стороне без предусмотренного установления в новом соединении.
Отдельно проверьте продолжение сеанса, если оно поддерживается. Сохранение MQTT session state не следует произвольно распространять на таблицу alias: у разных механизмов разные границы жизни. Именно это различие должно быть отражено в коде клиента или обеспечено проверенной библиотекой.
Подтвердить исправление на рабочем цикле
После обновления клиента повторите несколько штатных обрывов на стенде и проверьте обе темы. Сохраните ошибки протокола и итоговые прикладные записи. Устранение исключения в журнале недостаточно, если данные начали попадать в неправильный объект приложения.
В эксплуатационной записи укажите версию библиотеки и проверенный сценарий восстановления. Для хозяйства результатом является воспроизводимый возврат публикаций после потери сети, а не обязательное использование оптимизации любой ценой. Если поддержка не подтверждена, проект выбирает документированный совместимый режим и сохраняет правильную идентичность передаваемых данных.