Лекція 2.2. Передача даних в архітектурі IIoT: MQTT
6. Обмін повідомленнями в MQTT
6.2. Публікація повідомлення
Клієнт MQTT може публікувати повідомлення, як тільки він підключається до брокера. MQTT використовує фільтрування повідомлень на брокері на основі тем. Кожне повідомлення має містити тему, яку брокер може використовувати для пересилання повідомлення зацікавленим клієнтам. Як правило, кожне повідомлення має корисну інформацію, яка містить дані для передачі у форматі байтів MQTT.
Клієнт, що публікує дані (видавець) вирішує, чи хоче він відправити двійкові, текстові дані або навіть повноцінні XML або JSON. Повідомлення публікації (PUBLISH) у MQTT має кілька атрибутів, які вказані в таблиці 3:
Поле |
Обов’язкове поле |
Опис |
packetID |
Так |
Унікально ідентифікує пакет у змінному заголовку. Для QoS-0 завжди 0. |
topicName |
Так |
Тема гілки для публікації (наприклад, Drive/Speed) |
qos |
Так |
рівень QoS (0..2) |
retainFlag |
Так |
прапорець, який вказує чи буде дане повідомлення зберігатися як останнє хороше; якщо новий клієнт підпишеться під дану гілку він автоматично отримає це повідомлення |
payload |
Ні |
корисне навантаження |
dupFlag |
Так |
прапорець, що вказує на те, що повідомлення є дублікатом і відправлено повторно |
Коли клієнт надсилає повідомлення до MQTT брокера для публікації, брокер читає повідомлення, підтверджує його (відповідно до рівня QoS) і обробляє. Обробка брокером включає в себе визначення того, які клієнти підписалися на тему та надсилання їм повідомлення.
Клієнт, який спочатку публікує повідомлення, турбується тільки про доставку повідомлення PUBLISH брокеру. Як тільки брокер отримує повідомлення PUBLISH, він зобов'язаний доставити його всім абонентам. Видавець не отримує жодних відгуків щодо того, хто цікавиться опублікованим повідомленням, чи скільки клієнтів отримали повідомлення від брокера.