mqtt-приемник не получает данные - PullRequest
0 голосов
/ 10 апреля 2019

Я новичок в MQTT, думаю, я неправильно понял концепцию.Я опубликовал сообщение (например: m1001), используя узел red с QOS 1 & 2, брокер получил сообщение.В это время абонент или получатель отключаются из-за сбоя питания или интернета.

Когда я теперь подключаюсь к брокеру, я не получаю сообщение (например, m1001) в подписчике, и если яустановите retain=true, сообщение будет сохранено в брокере, и оно будет выполнять сообщение несколько раз, пока я не очищу его вручную.

Мне требуется, чтобы каждое сообщение доставлялось из паба в саб без сбоев.Как мне этого добиться?

1 Ответ

1 голос
/ 10 апреля 2019

QOS распространяется как на подписчиков, так и на издателей, и находится только между одним клиентом и брокером. Это означает, что если клиент публикует сообщение QOS 1/2, то рукопожатие QOS происходит только между издателем и брокером. Подписавшиеся клиенты также должны запросить QOS 1/2, чтобы получить гарантированную доставку

Чтобы получать сообщения, доставляемые подписчикам при повторном подключении, им необходимо подписаться на тему в QOS 1/2 и убедиться, что для флага cleanSession установлено значение false при повторном подключении.

Сохраненные сообщения различаются, и последнее сохраненное сообщение всегда будет доставляться клиенту, когда он подписывается на соответствующую тему, до тех пор, пока сохраненное сообщение не будет очищено (путем публикации нулевой полезной нагрузки с установленным сохраненным битом).

...