TsgcWSPClient_MQTT | MQTT Topics

Tópicos

No MQTT, a palavra tópico refere-se a uma string UTF-8 que o broker usa para filtrar mensagens para cada cliente conectado. O tópico consiste em um ou mais níveis de tópico. Cada nível de tópico é separado por uma barra (separador de nível de tópico)

 

myHome / groundfloor / livingroom / temperature

 

Em comparação com uma message queue, os tópicos MQTT são muito leves. O cliente não precisa criar o tópico desejado antes de publicar ou assinar nele. O broker aceita cada tópico válido sem qualquer inicialização prévia. Observe que cada tópico deve conter pelo menos 1 caractere e que a string do tópico permite espaços vazios. Os tópicos são sensíveis a maiúsculas e minúsculas.

 

 

WildCards

Quando um cliente assina um tópico, ele pode assinar o tópico exato de uma mensagem publicada ou pode utilizar wildcards para assinar múltiplos tópicos simultaneamente. Um wildcard só pode ser utilizado para assinar tópicos, não para publicar uma mensagem. Existem dois tipos diferentes de wildcards: _single-level e _multi-level.

 

Nível Único: +

Como o nome sugere, um wildcard de nível único substitui um nível de tópico. O símbolo de mais representa um wildcard de nível único em um tópico.

 

myHome / groundfloor / + / temperature

 

Qualquer tópico corresponde a um tópico com curinga de nível único se ele contiver uma string arbitrária no lugar do curinga. Por exemplo, uma assinatura de _myhome/groundfloor/+/temperature pode produzir os seguintes resultados:

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

NO => myHome / groundfloor / livingroom / brightness

NÃO => myHome / firstfloor / livingroom / temperature

NÃO => myHome / groundfloor / kitchen / fridge / temperature

 

Multi Level: #

O wildcard de múltiplos níveis cobre muitos níveis de tópico. O símbolo de cerquilha representa o wildcard de múltiplos níveis no tópico. Para que o broker determine quais tópicos correspondem, o wildcard de múltiplos níveis deve ser colocado como o último caractere do tópico e precedido por uma barra normal.

 

myHome / groundfloor / #

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

SIM => myHome / groundfloor / kitchen / brightness

NÃO => myHome / firstfloor / kitchen / temperature

 

Quando um cliente assina um tópico com um curinga multinível, ele recebe todas as mensagens de um tópico que começa com o padrão antes do caractere curinga, não importa quão longo ou profundo seja o tópico. Se você especificar apenas o curinga multinível como tópico (_#), você recebe todas as mensagens enviadas ao broker MQTT.