Вам необходимо использовать значения QOS (качество обслуживания) для сообщений.По умолчанию QOS установлен на 0, что в основном является срабатыванием и забудьте, QOS 1 - это гарантированная доставка (но может означать, что доставлено более одного раза).QOS 2 гарантированно доставляется только один раз.
Необходимо указать, что QOS находится между 1 клиентом и брокером, поэтому это может быть между издателем и брокером или брокером и подписчиком независимо.(например, вы можете опубликовать в QOS 0, а затем подписаться на тему в QOS 2).
Для очереди сообщений для автономных клиентов клиент должен быть подписан в QOS 1 или QOS 2 и при его повторном подключенииему нужно установить флаг cleanSession на false
и использовать тот же идентификатор клиента.
Брокеры MQTT не будут помещать в очередь сообщения для клиентов, которые никогда ранее не подключались.
С mosquitto_sub и mosquitto_pub вы можете установить уровень QOS с помощью опции -q
, а также установить идентификатор клиента с помощью опции -i
.Чтобы установить для флага чистой сессии значение false для mosquitto_sub, вы должны использовать опцию -c