Подписка на темы MQTT с использованием подстановочных знаков

У меня есть клиент MQTT, который хочет подписаться на следующие темы

  1. узел1 / данные / обновления
  2. узел1 / данные / дельта
  3. узел1 / данные

Конечно, у меня несколько узлов, поэтому я должен использовать подстановочные знаки, как описано здесь: https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/

Я пробовал следующие названия тем

  1. + / данные / +
  2. + / data / #
  3. + / data # (я был в отчаянии)

Используя приведенные выше выражения 1 и 2, я не получил сообщений для темы node1 / data.

Есть ли способ сделать это с помощью одной подписки?


person Florian Hansen    schedule 30.07.2019    source источник


Ответы (1)


Предполагая, что я читаю spec правильно, вариант 2 должен работать.

Например, если Клиент подписывается на «sport / tennis / player1 / #», он будет получать сообщения, опубликованные с использованием этих названий тем:

  • «Спорт / теннис / игрок1»
  • «Спорт / теннис / игрок1 / рейтинг»
  • «Спорт / теннис / игрок1 / счет / уимблдон»

Вариант 3 определенно не актуален.

Вы пробовали тестировать mosquitto, чтобы узнать, специфичен ли он для hivemq?

РЕДАКТИРОВАТЬ:

Я тестировал это с mosquito, используя mosquitto_pub и mosquitto_sub для публикации / подписки сообщений, и с вариантом 2 он работает в соответствии со спецификацией.

person hardillb    schedule 30.07.2019
comment
Спасибо за Ваш быстрый ответ. Я был уверен в выборе. 2 тоже должно работать. К сожалению, я только что перепроверил его, и он не работает. Подписался на тему + / data / #. Затем я опубликовал на node1 / data / update и получил сообщение (ура). Затем я опубликовал на node1 / data и не получил сообщение (нет). Кажется, связано с HiveMQ :( Есть другие предложения? - person Florian Hansen; 31.07.2019
comment
Тогда это недоработка HiveMQ. Вы должны указать на дефект - person hardillb; 31.07.2019
comment
Я тестировал его с помощью общедоступного брокера HiveMQ (broker.hivemq.com) и HiveMQ Community Edition, и он работает. Какую версию HiveMQ вы используете? Не могли бы вы также предоставить информацию об используемом вами клиенте? - person SgtSilvio; 01.08.2019
comment
На самом деле я не знаю, какой брокер используется (mdash.net/home). Может ли это быть связано с брокером? Может быть, это их индивидуальная реализация. Мой клиент - клиент MQTT3 HiveMQ Rx. Я отмечу этот ответ как принятый, так как он действительно должен работать. Спасибо, в любом случае (: - person Florian Hansen; 02.08.2019
comment
Это полностью связано с брокером, а не с клиентом. Тег hivemq подразумевает, что вы используете брокера, а не клиента (и формулировка вопроса оставила его неоднозначным). Как показывают комментарии, это не проблема с брокером HiveMQ. Вы должны сообщить mdash, что их брокер не соответствует спецификации. - person hardillb; 02.08.2019