Підписка на MQTT народження і буде тематика? (emqttd)


11

Я запускаю emqttd ( emqtt.io ). Я хотів би стежити за тим, як клієнти підключаються та відключаються від окремого процесу, який би підписався на системну тему, де розміщуються повідомлення про народження та волю. Який правильний спосіб зробити це?


3
Ласкаво просимо в IoT SE. Чи можете ви детальніше розповісти про налаштування? На якій машині ви працюєте emqttd і в якій версії?
Гельмар

Відповіді:


5

Я хотів би стежити за тим, як клієнти підключаються та відключаються від окремого процесу, який би підписався на системну тему, де розміщуються повідомлення про народження та волю.

Посібник користувача 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)

Дуже корисний. Дякуємо, що знайшли час. emqttd_ctl може надати часткове рішення, але, маючи в своєму розпорядженні pubsub, я би сподівався, що ви можете використовувати цей механізм для створення сповіщень. Я думаю, це те, що я все-таки можу застосувати, вимагаючи від клієнтів публікувати повідомлення про народження та заповіти.
Fabien Papleux

1

Ну, не впевнений у повідомленні про народження, а LWT (Last Will and Testament) необов’язковий відповідно до специфікації. Отже, вам не обов'язково надходити повідомлення, якщо б ваш брокер не був налаштований на такі вимоги.


LWT - брокер, який діє від імені відключеного клієнта. Реалізація, яка не є обов'язковою для брокера. Це просто необов’язково, щоб клієнт створив останню тему волі.
Ганіма

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