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