При использовании MQTT с Qos 1 нет необходимости отправлять пакет PUBACK от абонента брокеру? - PullRequest
1 голос
/ 14 января 2020

Я пытался выяснить поток QoS 1, но это сложно.

Как я понял, когда издатель отправляет некоторые пакеты с QoS1, он должен ждать пакет PUB ACK.

Я думал, что когда брокер получил пакет PUB, он должен был отправить это все подписчик.
Затем брокер также стал издателем .

Таким образом, брокер отправляет этот пакет PUB всем подписчикам
, и брокер также ждет пакетов PUB ACK от всех подписчиков.
Когда брокер получил все пакеты PUB ACK, тогда отправить пакет PUB ACK исходному издателю (клиенту).

Я прав?
(Было описание потока между издателем и брокером, но не между брокером и подписчиками)

Ответы [ 3 ]

3 голосов
/ 14 января 2020

QoS всегда когда-либо только между одним клиентом и брокером одновременно, нет уведомлений о сквозной доставке (от издателя к подписчику).

Совершенно возможно опубликовать sh сообщение в QoS 1, но подписчики могут иметь только QoS 0. Вы также можете иметь несколько подписчиков, каждый из которых имеет разные подписки QoS, некоторые с QoS 0, некоторые с QoS 1 и, наконец, с QoS 2.

Обмен QoS между издателем и брокер должен завершить работу, прежде чем он начнет доставлять это сообщение подписчикам.

0 голосов
/ 14 января 2020

Существует неправильное понимание между подтверждением сообщения протокола и подтверждением процесса. Подтверждение сообщения подтверждает доставку сообщения, а подтверждение процесса должно быть отправлено как отдельное сообщение от устройства.

Несмотря на то, что он находится между одним клиентом и брокером, мы всегда советуем нашим клиентам внедрять собственное подтверждение процесса, когда периферийное устройство завершает свой процесс.

0 голосов
/ 14 января 2020

Просто для того, чтобы добиться хорошего объяснения от hardillb, брокер не ждет, пока другие подписчики отправят PUBACK, прежде чем отправлять PUBACK первоначальному издателю. Это может зависеть от реализации брокера, но он просто отвечает издателю с PUBACK и затем начинает публиковать sh (да, это сам издатель) подписчикам, которые могут быть подписаны с различными уровнями QoS (0, 1 или 2). .

...