Qual é o uso / objetivo do MQTT QoS?
Estou estudando o protocolo MQTT e parece que há uma contradição nas primeiras linhas das especificações:
O protocoloexecuta sobre TCP / IP ou sobre outros protocolos de rede que fornecem pedidos, sem perdas, conexões bidirecionais. Suas características incluem:
[...]
Três qualidades de serviço para entrega de mensagens:
"No máximo uma vez", onde as mensagens são entregues de acordo com os melhores esforços do ambiente operacional.Pode ocorrer perda de mensagem. Esse nível pode ser usado, por exemplo, com dados do sensor ambiente, onde não importa se uma leitura individual é perdida, pois a próxima será publicada logo após. ·"Pelo menos uma vez", onde as mensagens são garantidas para chegar, mas duplicatas podem ocorrer. ·"Exatamente uma vez", onde é garantido que a mensagem chegue exatamente uma vez. Esse nível pode ser usado, por exemplo, em sistemas de cobrança em que mensagens duplicadas ou perdidas podem levar à aplicação de cobranças incorretas.Se o MQTT puder executar apenas protocolos de rede sem perda, qual é o significado de fornecer um nível de QoS com perda (nível 0)?
Acredito que nem é possível fornecer isso, já que o protocolo TCP cuidará da retransmissão de mensagens perdidas. Isso faria sentido para o MQTT-SN, que se destina a atropelarnão TCP, não confiável redes.
(observação: o nível 1 "pelo menos uma vez" não faz sentido ao usar o protocolo TCP, porque o TCP já inclui essa garantia, mas pode fazer sentido em um caso mais geral, já que a especificação diz que outro protocolo sem perdas pode ser usado)