¿Cuál es el uso / propósito de MQTT QoS?
Estoy estudiando el protocolo MQTT y parece que hay una contradicción en las primeras líneas de las especificaciones:
El protocolose ejecuta sobre TCP / IP, o sobre otros protocolos de red que proporcionan pedidos, sin pérdidas, conexiones bidireccionales. Sus características incluyen:
[...]
Tres calidades de servicio para la entrega de mensajes:
"Como máximo una vez", donde los mensajes se entregan de acuerdo con los mejores esfuerzos del entorno operativo.La pérdida de mensajes puede ocurrir. Este nivel podría usarse, por ejemplo, con datos del sensor ambiental donde no importa si se pierde una lectura individual, ya que la próxima se publicará poco después. ·"Al menos una vez", donde se asegura que lleguen los mensajes pero pueden ocurrir duplicados. ·"Exactamente una vez", donde se asegura que el mensaje llegue exactamente una vez. Este nivel podría usarse, por ejemplo, con sistemas de facturación en los que los mensajes duplicados o perdidos podrían dar lugar a la aplicación de cargos incorrectos.Si MQTT solo puede ejecutarse en protocolos de red sin pérdidas, ¿qué significa proporcionar un nivel de QoS con pérdidas (nivel 0)?
Creo que ni siquiera es posible proporcionar eso, ya que el protocolo TCP se encargará de la retransmisión de mensajes perdidos. Eso tendría sentido para MQTT-SN, que está destinado a atropellarno TCP, no confiable redes.
(observación: el nivel 1 "al menos una vez" no tiene sentido cuando se usa el protocolo TCP porque TCP ya incluye esta garantía, pero podría tener sentido en un caso más general ya que la especificación dice que se puede usar otro protocolo sin pérdida)