Чи є спосіб зберегти рівень QQS MQTT, поки він не досягне клієнта?


9

MQTT дозволяє відправляючим встановити рівень якості обслуговування (QoS), який надає певні гарантії того, чи буде отримано повідомлення (і чи дозволені копії). Ця стаття від HiveMQ висвітлює проблему пониження рівня , коли клієнт з нижчим рівнем QoS не отримає повідомлення з гарантіями, які вимагав відправник:

Як вже було сказано, потоки QoS між клієнтом, що видає та підписується, - це дві речі, а також QoS може бути різним. Це означає, що рівень QoS може відрізнятися від клієнта A, який публікує повідомлення, і від клієнта B, який отримує опубліковане повідомлення. Між відправником і брокером QoS визначається відправником. Коли брокер розсилає повідомлення всім абонентам, використовується QoS підписки від клієнта B.

Чи надає MQTT спосіб вказівки на те, що цей пониження є неприйнятним і що повідомлення повинно бути доставлене з використанням запитуваного QoS оригіналу відправника? Є єдиний варіант, щоб перед передачею повідомлення переконатися, що і відправник, і одержувач мають потрібне налаштування QoS ?

Відповіді:


8

При роботі з MQTT слід пам’ятати, що «абоненти та видавці вважаються клієнтами MQTT».

Як було сказано, QoS набір під час публікації повністю пов'язаний з брокером (B), а не іншими клієнтами. Щоб переконатися, що абонент (S) отримує все, що видає видавець (P), потрібно використовувати QoS 1.

Розглянемо випадки: P - надсилає з QoS 0, що означає, що кожне повідомлення буде принаймні один раз (B один раз або нуль). У цьому випадку, якщо S підписується на B з QoS 0 - немає гарантії, що навіть коли брокер (B) отримає повідомлення, яке збирається нарешті дійти до S. QoS 1 - S обов'язково отримає QoS 2 - S не отримає кілька повідомлень, поки брокер може

Якщо ми робимо те ж саме з іншими QoS. Ми дізнаємось, що QoS1 для абонентів добре працює з усіма рівнями, оскільки QoS 1 є наддувом усіх.


MQTT не дає жодних вказівок на те саме, але ми можемо досягти QoS відправника, використовуючи QoS 1 під час підписки.


4

QoS 1 або 2 рівні лише гарантують, що опубліковане повідомлення надійшло до брокера. Абонент QoS 1 або 2 запевняє посередника в тому, що повідомлення було отримано.

Публікація з 1 або 2 не означає, що хтось слухає.

Який ваш випадок використання?


3
Не задавайте питань у відповідях. Якщо щось незрозуміло, залиште коментар спочатку.
Бенс Каулікс

Мені цікаво будь-яка ситуація, коли у вас може бути сенсор, який надсилає дані брокеру повідомлень, а потім пересилається на комп'ютер чи інший процесор, де життєво важливо зберігати гарантії QoS.
Aurora0001
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.