Использование подстановочного знака в пределах уровня в теме MQTT - PullRequest
0 голосов
/ 02 мая 2019

Я хочу подписаться на несколько тем MQTT с небольшими различиями в одном из уровней тем. Например:

  • sports/tennis/courtA
  • sports/tennis/courtB
  • sports/tennis/courtC

Есть ли способ использовать подстановочный знак из одного символа?

Во всех проведенных мною поисках я не видел ничего, кроме # и +. Насколько я понимаю, невозможно опубликовать письмо как новый подуровень (т. Е. sports/tennis/court/A).

Я хотел бы иметь что-то вроде sports/tennis/court*, поэтому я вижу темы суда, но больше ничего на этом уровне.

1 Ответ

2 голосов
/ 02 мая 2019

Нет, вы можете использовать подстановочные знаки только на уровне подтемы.Единственными поддерживаемыми подстановочными знаками являются # и +

#, которые соответствуют 1 или нескольким подтемам, но не могут использоваться в середине темы.Например, sports/tennis/# допустимо, но sports/#/courtA не соответствует.

+ соответствует одной подтеме и может быть размещено в любом месте темы.например, +/tennis/courtA и sports/+/courtA оба действительны.

Что вы можете сделать, это подписаться на тему с подстановочными символами, которая имеет немного более широкую область действия, чем вы хотите, и затем снова выполнить фильтрацию в обработчике сообщений, поскольку все обратные вызовы обработчика сообщенийдолжен предоставить вам доступ к теме входящих сообщений.

например, подписаться на sports/tennis/+, а затем отфильтровать все остальное, что ему соответствует при доставке сообщения.

РЕДАКТИРОВАТЬ: извините, я немного пропустилв середине вопроса.

sports/tennis/courts/A является вполне допустимой темой, как и sports/tennis/courts/B, и будет соответствовать либо sports/tennis/courts/#, либо sports/tennis/courts/+ (при том понимании, что первая также будет соответствовать sports/tennis/courts/A/foo где второй не будет)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...