MQTT publicar y suscribirse a la guía para principiantes

En MQTT, el proceso de envío de mensajes se denomina publicación y, para recibir mensajes, los clientes de MQTT deben suscribirse a los temas de MQTT.

Conceptos básicos de publicación de MQTT

Los clientes pueden elegir libremente publicar cualquier tema. Actualmente no hay temas reservados. Sin embargo, el servidor (corredor) puede restringir el acceso al tema.

El cliente no puede publicar directamente el mensaje a otro cliente, ni sabe si algún cliente ha recibido el mensaje.

Los clientes solo pueden publicar mensajes en un solo tema, pero no en un grupo de temas.

Sin embargo, si un grupo de clientes se suscribe al mismo tema, todos los clientes que se suscriban al mensaje pueden recibir el mensaje.

 

Flujo de mensajes y QOS para publicar mensajes


MQTT admite 3 niveles de QOS 0,1,2:

  • QOS-0-Por defecto, la entrega de mensajes no está garantizada.
  • QOS-1-Entrega de mensajes garantizada, pero puede repetirse.
  • QOS-2: para garantizar que no haya duplicación de la entrega de mensajes.

Utilice uno de estos niveles al publicar mensajes, donde el nivel 0 de QOS es el nivel predeterminado.

Si desea asegurarse de que puede recibir el mensaje incluso si el suscriptor no está en línea, debe publicar con una calidad de servicio de 1 o 2.

El siguiente diagrama muestra el flujo de mensajes de mensajes con QOS 0, 1 y 2 entre el cliente y el servidor (intermediario).

mqtt-publish-message-flow

El servidor confirma el uso de QOS para publicar mensajes para 1 y 2.

Esto resultará en el envío de varios mensajes.

El mensaje emitido por QOS de 0 requiere solo 1 mensaje y el servidor no lo confirma.

Los mensajes publicados con QOS como 1 o 2 también tienen un número de ID de mensaje (ID de mensaje), que se puede usar para rastrear mensajes.

Publicar mensajes y banderas reservadas


Cuando el cliente publica un mensaje al agente, debe enviar:

  • Asunto del mensaje
  • Mensaje QOS
  • Ya sea para mantener la bandera de mantener el mensaje

El indicador de retención generalmente se establece en Falso, lo que significa que el servidor (intermediario) no retendrá el mensaje.

Si el indicador de retención se establece en Verdadero, el servidor (corredor) retendrá el último mensaje con el indicador de retención establecido en el tema.

La calidad de servicio del mensaje publicado no tiene ningún efecto sobre el mensaje retenido.

Esta función se utiliza principalmente para sensores que no cambian mucho y no publican su estado con frecuencia.

Por ejemplo, si tiene un sensor de puerta, que casi siempre es el mismo, no tiene mucho sentido publicar el estado cada segundo.

Sin embargo, si su estado se cambia solo en el momento de la publicación, ¿qué sucede cuando el suscriptor se suscribe al sensor?

En este caso, si el último estado publicado no tiene una bandera de reserva, el suscriptor no conocerá el estado del sensor hasta que el sensor se vuelva a publicar.

¿Qué pasará con las noticias publicadas?


Pregunta-
1. ¿Qué sucede después de que el suscriptor recibe el mensaje publicado?

2. Si no hay suscriptores, ¿cómo se manejarán los mensajes publicados?

Para responder a estas preguntas, considere la televisión o la radio.

Si no ha sintonizado el canal de radio correspondiente, ¡se lo ha perdido!

Por lo tanto, para la pregunta 1 y la pregunta 2, la respuesta es: el mensaje se ha eliminado del servidor (corredor).

Descripción

Cuando un cliente publica un mensaje sobre un tema, el corredor distribuye el mensaje a todos los clientes conectados que se han suscrito al tema.

Una vez que el mensaje se envía a estos clientes, se eliminará del corredor (consulte la nota a continuación).

Si ningún cliente se suscribe al tema, o no se establece ningún contacto con ellos, el mensaje se eliminará del corredor. (Ver nota)

Normalmente, el corredor no almacena mensajes.

Nota: los mensajes retenidos, las conexiones persistentes y los niveles de QOS pueden hacer que los mensajes se almacenen temporalmente en el corredor / servidor.

Suscribirse a temas

Para recibir noticias sobre un tema, debe suscribirse a uno o más temas.

Al suscribirse a un tema, también debe configurar la calidad de servicio de la suscripción al tema.

El nivel de QOS y su significado son los mismos que el nivel del mensaje publicado.

Cuando se suscribe a uno o más temas, en realidad le está diciendo al corredor que le envíe mensajes sobre ese tema.

Para enviar mensajes al cliente, el corredor utiliza el mismo mecanismo de publicación que el cliente.

Puede utilizar dos caracteres comodín (+ y #) para suscribirse a varios temas, como se describe en el tutorial Comprender los temas de MQTT.

El corredor utiliza el mensaje de confirmación de suscripción para confirmar todas las suscripciones. El mensaje de confirmación de suscripción incluye un identificador de paquete que se puede utilizar para verificar el éxito de la suscripción.

Publicar y suscribir preguntas y respuestas.

P: ¿Puedo publicar y suscribirme al mismo tema?
A: si. En MQTT versión 5, puede evitar recibir mensajes publicados por el cliente (sin suscripción local).
P: ¿Puede el broker MQTT suscribirse al cliente MQTT?
R: No
P: El mensaje que se va a recibir tiene el mismo QOS que el QOS suscrito.
R: No necesariamente, porque depende de la calidad de servicio que publica el mensaje.
P: ¿Puedo suscribirme a mensajes de clientes específicos?
R: No, solo puedes suscribirte a temas.

http://www.steves-internet-guide.com/mqtt-publish-subscribe/

Supongo que te gusta

Origin blog.csdn.net/maimang1001/article/details/109248218
Recomendado
Clasificación