Статус документа
Статус документа

ГОСТ Р 58603-2019 (ИСО/МЭК 20922:2016) Информационные технологии (ИТ). Интернет вещей. Протокол организации очередей доставки телеметрических сообщений MQTT. Версия 3.1.1

     7.6 Порядок отправки сообщений


Клиент ДОЛЖЕН следовать этим правилам при реализации потоков данных, определенных в данном разделе настоящего стандарта:

- когда он повторно отправляет какие-либо пакеты PUBLISH, повторно отправить их в том порядке, в котором были отправлены исходные пакеты PUBLISH (это относится к сообщениям QoS 1 и QoS 2) [MQTT-7.6.0-1];

- отправлять пакеты PUBACK в том порядке, в котором были получены соответствующие пакеты PUBLISH (сообщения QoS 1) [MQTT-7.6.0-2];

- отправлять пакеты PUBREC в том порядке, в котором были получены соответствующие пакеты PUBLISH (сообщения QoS 2) [MQTT-7.6.0-3];

- отправлять пакеты PUBREL в том порядке, в котором были получены соответствующие пакеты PUBREC (сообщения QoS 2) [MQTT-7.6.0-4].

Сервер ДОЛЖЕН по умолчанию считать каждую тему упорядоченной темой. Он МОЖЕТ предоставить административный или иной механизм, позволяющий считать одну или несколько тем упорядоченными темами [MQTT-7.6.0-5].

При обработке Сервером сообщения, опубликованного в упорядоченной теме, он ДОЛЖЕН следовать приведенным выше правилам при доставке сообщений каждому из своих подписчиков. Кроме того, он ДОЛЖЕН отправлять пакеты PUBLISH Клиентам (в этой же теме и с тем же уровнем качества обслуживания) в том порядке, в котором они были получены от любого указанного Клиента [MQTT-7.6.0-6].

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

Если Клиент и Сервер удостоверяются, что в процессе доставки находится только одно сообщение в любой момент времени (не отправляя сообщение до тех пор, пока доставка предыдущего сообщения не будет подтверждена), то после любого последующего сообщения не будет получено пересылаемое ранее сообщение QoS 1 - например, абонент может получить их в порядке 1,2,3,3,4, но не 1,2,3,2,3,4. Ограничение размера потока пересылаемых сообщений до 1 сообщения также означает, что порядок будет сохранен, даже если автор отправляет последовательность сообщений с разными уровнями QoS по одной и той же теме.