MQTT выше QoS на абонента - PullRequest
       43

MQTT выше QoS на абонента

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

Если у меня есть издатель, отправляющий сообщение моему брокеру MQTT с QoS 1 (по крайней мере, одна доставка) и абонент с QoS 2 (ровно одна доставка), возможно ли, чтобы подписчик все еще получал повторяющиеся сообщения?

Меня беспокоит то, что издатель может отправлять дублирующие сообщения брокеру (поскольку QoS 1 заявляет, что это возможно), а затем брокер будет рассматривать их все как разные сообщения и пересылать их всем подписчику.Так работают брокеры MQTT?Или они достаточно умны, чтобы понять, что дубликаты сообщений, полученных от издателя, одинаковы, а затем просто переслать одно подписчику.

1 Ответ

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

Уровень QoS находится между отдельными клиентами и брокером. Подписчики также запрашивают уровень QoS, и брокер предоставляет подписчику максимум QoS для подписки.

Спецификация MQTT для v3.1.1 описывает, как эти различные уровни QoS связаны с вашим примером в разделе 3.8.4 :

QoS сообщений полезной нагрузки, отправленных в ответ на подписку, ДОЛЖНЫ быть минимальным QoS первоначально опубликованного сообщения и максимальным QoS, предоставленным сервером.

Подписчик мог получить максимум QoS 2 при подписке на тему. Но оригинальный издатель использует QoS 1. Таким образом, подписчик может получить дубликаты сообщения, отправленного исходным издателем.

...