(1) Сообщение, доставленное в QOS0 через TCP / IP, гарантированно достигло только стека TCP удаленного компьютера, а не действующего приложения (будь то клиент MQTT или брокер MQTT).
Сообщения, отправленные с более высоким QOS, распознаются приложением, а не только стеком TCP / IP хост-компьютера, поэтому вы можете быть более уверены, что он действительно обработан.
(2) Некоторые брокеры могут поддерживать только QOS0 или QOS 0/1 (например, AWS IoT ) и, как упомянуто в doc , сообщение SUBACK включает предоставленный уровень QOS, который может не соответствовать тому, что было запрошено. Таким образом, даже если подписывающийся клиент
(3) Если клиент аварийно завершает работу, обработав сообщение, но перед отправкой PUBACK, то брокер может попытаться доставить сообщение еще раз, когда клиент повторно подключится.