Texto copiado
HomeBlog Temas MQTT

Conocer MQTT Temas & sus fundamentos

por Ponlakshmi


MQTT Topics

MQTTlos mensajes no se envían directamente desde uno algo a otro. Más bien, se les asigna a "temas MQTT". ElMQTT brokerentonces distribuye los mensajes a cualquier cliente que se haya suscrito a ellos. El tema del término en protocolo se refiere a unUTF-8 stringutilizado por el broker para filtrar mensajes para cada cliente suscrito. Cuando alguien se suscribe a un tema y luego publica un mensaje a ese tema con el mensaje retenido establecido a Verdadero, los temas son establecido. Cuando el último suscriptor a ese corredor se desconecta, se establece una sesión limpia.Limpio período de sesioneses establecido a Verdad cuando un El cliente MQTT se conecta.

Estructura de un tema MQTT

Sensor/water_level/water_status– sensores, nivel de agua/agua_status son niveles de tema.

Salta delantera ( / )– un separador de nivel de tema.

Separador de nivel temático

El tema se compone de uno o más niveles de tema. Un enfrentamiento adelante separa cada nivel de tema (nivel temático) separador). El corredor no requiere que ese tema sea pre-registrado.


Los temas de MQTT son muy ligeros en comparación con una cola de mensajes. Antes de publicar o suscribirse a un tema, el cliente no necesita crear temas. Sin ninguna inicialización previa, el corredor acepta cualquier valido Tema.

Estos son algunos ejemplos para ver:

Topics

Un vistazo a MQTT Temas utilizados enBevywise Broker.

Tema Semántico y Usage

Excepto por la longitud de una cadena codificada UTF-8, no hay restricción al número de niveles en una Nombre del tema o filtro del tema. Nombres del tema y filtros del tema están sujetos a las siguientes pautas:


  • Es importante señalar que cada tema debe contener al menos un personaje y que la cadena de tema permite espacios vacíos.
  • El carácter nulo no se puede utilizar en nombres de temas o filtros de temas.
  • Estos temas son sensibles a casos
  • Por ejemplo, sensor/temperatura y sensor/temperatura, son dos temas distintos.

Tema Salvaje Tarjetas

El Filtro Tema de una suscripciónpuede contener caracteres comodines especiales que le permiten suscribirse a varios temas a la vez. El caracteres salvajes pueden ser utilizado en Filtros Tópicos pero no en Nombres Tópicos. Los Wildcards se clasifican en dos tipos:


  • Salvaje de nivel único y
  • Un salvaje multinivel.

Cuando uno de los dos caracteres comodines se encuentra en Filtros Temas dados por suscribir Clientes, los uso del nivel de tema El separador es significativo. Los separadores para niveles de tema pueden existir en cualquier lugar de un Filtro Tema o un Tema Nombre. Un tema de longitud cero nivel es indicado por separadores de nivel de tema adyacente.

Tarjeta salvaje de nivel único

Un personaje salvaje de un solo nivel en un tema está representado por el símbolo más “+”. El Filtro Tema Wildcard de un solo nivel puede ser utilizado en cualquier nivel, incluyendo el primero y el último. Debe llenar todo el nivel del filtro dondequiera que sea se utiliza. Puede ser utilizado en el Filtro Tema a múltiples niveles y en conjunto con el comodín multinivel.

Por ejemplo,


  • “+”
  • “tank/+/water_level” – Estos son temas válidos con un solo nivel comodín.

Cualquier tema como “tank/water_level/+” coincide “tank/water_level/flow_rate1” y “tank/water_level/flow_rate2”, pero no “tank/water_level/flow_rate1/increase”. Además, porque el comodín de un solo nivel coincide con un nivel, “tank/+” no "tank", pero "tank/" sí.

Tarjeta salvaje multinivel

El carácter de comodín “#” es un comodín multinivel que se puede utilizar para combinar cualquier número de niveles dentro de un tema. The parent and any number of child levels are represented by the multi-level wildcard. The multi-level carácter salvaje debe ser dado solo o después de un separador de nivel de tema. Debe ser el último carácter suministrado en el Filtro temático en o escenario.

Por ejemplo,


  • “tank/water_level/#” es un tema válido con tarjeta salvaje multinivel.

Si un Cliente se suscribe a “tank/water_level/flow_rate1/#”, por ejemplo, recibirá mensajes publicados en virtud de siguientes nombres de temas:

  • “tank/water_level/flow_rate1”
  • “tank/water_level/flow_rate1/increasing”
  • “tank/water_level/flow_rate1/increas/decreciente”

Temas reservados

Temas que comienzan con un portón sign ($)son temas reservados. Los temas de $-símbolo son para las estadísticas internas del corredor. Filtros temáticos que empezar con un comodín carácter (# o +) no debe ser igualado con Nombres Tópicos que comienzan con un carácter $. Los clientes no deben se puede enviar mensajes a otros Clientes con tales Nombres Tema, según el Servidor. Tema Nombres que comienzan con un líder $ carácter puede ser utilizado para propósitos adicionales por implementaciones del servidor. $SYS/ se ha convertido en un prefijo prominente para temas que contiene servidor específico data o control APIs. Un tema que contiene un personaje de $ líder no puede ser utilizado por las aplicaciones para su por razones propias.


Toda la información siguiente se almacena generalmente en $SYS/, sin embargo las implementaciones de los corredores difieren. A continuación se presentan algunos casos.


  • Cualquier mensaje publicado sobre un tema que comience con $ no será recibido si se suscribe a "#".
  • Cualquier mensaje enviado a “$SYS/broker/Clients” no será recibido por suscripción a “+/broker/Clients. ”
  • Los mensajes publicados a temas que comienzan con “$SYS/” serán recibidos si se suscribe a “$SYS/#. ”
  • Los mensajes enviados a “$SYS/monitor/Clients” serán recibidos si se suscribe a “$SYS/broker/+. ”
  • Un cliente debe suscribirse a “#” y “$SYS/#” para recibir mensajes de temas que comienzan con $SYS/ y temas que no comienza con un $.

Lo anterior son los fundamentos de los temas del mensaje. MQTT temas, como se puede ver, son dinámicos y ofrecen un montón de flexibilidad. Siga utilizando su extensibilidad sin cambiar toda la jerarquía de temas para la posterior inclusión de nuevos sensores por añadir estos a tu árbol de temas.

Para obtener más información sobre el protocolo,