Я изучаю протокол MQTT и кажется, что есть противоречие в первых строках спецификации:Какова польза/цель MQTT QoS?
Протокола работает над TCP/IP, или по сравнению с другими сетевыми протоколами, которые обеспечивают упорядоченные, без потерь, двунаправленные соединения. Его особенность включает в себя:
[...]
Три качества сервиса для доставки сообщения:
- «В самый раз», где сообщения доставляется в соответствии с лучшими усилиями рабочей среды. Потеря сообщений может произойти. Этот уровень может использоваться, например, с данными датчиков окружающего датчика , где не имеет значения, будет ли потеряна отдельная цифра , поскольку следующая будет опубликована вскоре после этого. ·
- «В наименее один раз», где сообщения могут быть получены, но дубликаты могут быть получены . ·
- «Ровно один раз», где сообщение должно быть получено ровно один раз. Этот уровень может использоваться, например, с биллинговыми системами , где дублирующиеся или потерянные сообщения могут приводить к неправильным тарифам .
Если MQTT может работать только через сетевые протоколы, которые без потерь, в чем смысл предоставления потерями уровня QoS (уровень 0)?
Я считаю, что даже представить это невозможно, поскольку протокол TCP позаботится о повторной передаче потерянных сообщений. Это имело бы смысл для MQTT-SN, который предназначен для запуска более не-TCP, ненадежных сетей.
(примечание: «Уровень 1» хотя бы один раз «не имеет смысла при использовании протокола TCP либо потому, что TCP уже включает эту гарантию, но может иметь смысл в более общем случае, поскольку спецификация говорит, что другой протокол без потерь может быть используется)