MQTT topic matching: похожие имена могут обозначать разные темы

Фотография конкретного исполнения не приложена.

Клиент способен успешно подписаться и не получать ожидаемые измерения из-за одного символа. Для MQTT имя темы является частью протокольного контракта. Его нельзя автоматически нормализовать по привычным правилам файловых путей или веб-адресов.

MQTT 5 задаёт case-sensitive matching и запрещает серверу произвольную normalization. Начальный или конечный slash создаёт отличающееся имя, а соседние separators образуют пустой level. Поэтому line/a, /line/a и line/a/ нельзя считать одним destination без явного прикладного преобразования.

Wildcards разрешены в Topic Filters, но не в публикуемом Topic Name. Отдельно filters с первым wildcard не покрывают names, начинающиеся с dollar. Общая подписка # поэтому не заменяет предусмотренный отдельный filter для соответствующего служебного пространства.

В приёмке сопоставляют точные имена publisher и filters subscriber, включая case и пустые levels. Проверяют положительные и соседние отрицательные примеры. Отчёт должен показывать реальное matching. Успешный SUBACK и визуально похожая строка не подтверждают, что публикация соответствует нужной подписке и будет направлена обработчику.

Основание — MQTT Version5.0 OASIS Standard07March2019, official os HTML edition, разделы MQTT5.0 4.7 Topic Names and Topic Filters. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — MQTT Version 5.0, OASIS Standard от 7 марта 2019 года. Поддержка возможностей конкретными broker и client library, дисковое хранение и политика доступа не проверялись. Соединения, подписки, сообщения и настройки рабочих систем не выполнялись; приведены критерии будущей приёмки.

Запросить

Запросы отправляются на наш e-mail из вашей почтовой программы.