Я запускаю emqttd ( emqtt.io ). Я хотів би стежити за тим, як клієнти підключаються та відключаються від окремого процесу, який би підписався на системну тему, де розміщуються повідомлення про народження та волю. Який правильний спосіб зробити це?
Я запускаю emqttd ( emqtt.io ). Я хотів би стежити за тим, як клієнти підключаються та відключаються від окремого процесу, який би підписався на системну тему, де розміщуються повідомлення про народження та волю. Який правильний спосіб зробити це?
Відповіді:
Я хотів би стежити за тим, як клієнти підключаються та відключаються від окремого процесу, який би підписався на системну тему, де розміщуються повідомлення про народження та волю.
Посібник користувача emqtt показує системну тему, яка пропонує деяку статистику брокера, тобто $SYS/brokers/${node}/stats/clients/count
забезпечує кількість поточних підключених клієнтів. Зауважте, що тут не буде вказано жодних конкретних даних щодо підключених клієнтів - тому я вважаю, що тут не потрібно.
Повідомлення Last will (LWT, Last Will та Testament) - це не тематика системи, а звичайна тема, встановлена клієнтом під час підключення. Якщо ви хочете відстежувати цю тему, просто підпишіться на неї. Однак зауважте, що повідомлення LWT відміняються, якщо клієнт граціозно відключається, надсилаючи повідомлення DISCONNECT (див. Блог hiveMQ , чудово прочитаний btw).
Посібник користувача emqtt представляє кращий спосіб контролювати підключення та відключення клієнтів:
./bin/emqttd_ctl
Командного рядка можна використовувати для запиту і адмініструвати EMQ брокера (не працює на Windows).
Я думаю, що моніторинг clients list
- перелік усіх клієнтів MQTT - і clients show <ClientId>
- покажіть клієнта MQTT - тут є найбільш корисним. Таким чином, запланований окремий процес для моніторингу клієнтів не потребує передплати брокера, а просто використання його ./bin/emqttd_ctl
.
$ ./bin/emqttd_ctl clients list Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113) Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)
Ну, не впевнений у повідомленні про народження, а LWT (Last Will and Testament) необов’язковий відповідно до специфікації. Отже, вам не обов'язково надходити повідомлення, якщо б ваш брокер не був налаштований на такі вимоги.