Я использую MQTT во встроенных приложениях. Я подробно рассмотрел документацию, и я понимаю, как функция QoS реализована в MQTT и что означает каждое значение.MQTT QoS Downgrade
Как известно, MQTT делает понижение QoS, что означает, что сообщение будет доставлено с самым низким значением QoS между отправителем и получателем. Это понимается, и для большинства сопоставлений QoS между отправкой и получением это имеет смысл.
Однако у меня есть проблема с конкретной ситуацией. Что происходит, когда сообщение публикуется с QoS 1, в то время как у клиента есть подписка на QoS 2?
Сообщение будет доставлено не реже одного раз для брокера, а это означает, что он может быть доставлен не один раз. С другой стороны, клиент-подписчик ожидает, что он будет получать сообщение ровно один раз, что не так.
Как можно решить эту серьезную проблему? По сути, я не могу доверять настройке QoS 2.
(Обратите внимание, что это не будет проблемой, поскольку я мог бы просто публиковать сообщения с QoS 2. Однако это становится проблемой, когда клиенты публикации выходят из-под контроля, и нет гарантии, какие QoS они будут используйте.)
Так что, по существу, в публикациях, выходящих из-под контроля, я всегда должен принимать QoS 0 или QoS 1, но никогда QoS2, правильно? –