Подписываешься на рождение MQTT и будут ли темы? (Emqttd)

11

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

Фабьен Папле
источник
3
Добро пожаловать в IoT SE. Можете ли вы подробнее рассказать о настройке? На какой машине вы используете emqttd и в какой версии?
Хелмар

Ответы:

5

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

Руководство пользователя emqtt показывает системную тему, которая предлагает некоторую статистику брокера, т.е. $SYS/brokers/${node}/stats/clients/countпредоставляет счетчик текущих подключенных клиентов. Обратите внимание, что здесь не будут перечислены какие-либо подробности о подключенных клиентах, поэтому я считаю, что это не то, что здесь необходимо.

Сообщения о последней воле (LWT, Last Will и Testament) - это не системная тема, а обычная тема, настраиваемая клиентом во время подключения. Если вы хотите следить за этой темой, просто подпишитесь на нее. Однако обратите внимание, что сообщения LWT отбрасываются, если клиент корректно отключается, отправляя сообщение DISCONNECT (см. Блог hiveMQ , отлично читайте, кстати).

В руководстве пользователя 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, я бы надеялся, что вы сможете использовать этот механизм для создания предупреждений. Я предполагаю, что это то, что я мог бы применить, требуя от клиентов публиковать сообщения о рождении и волеизъявлении.
Фабьен
1

Ну, не уверен насчет сообщения о рождении, и LWT (Last Will и Завет) необязательны согласно спецификации. Таким образом, вы не обязательно будете получать сообщения, если ваш брокер не настроен на такие требования.

Мыслю, следовательно, существую
источник
LWT - брокер, действующий от имени отключенного клиента. Реализация, которая не является обязательной для брокера. Для клиента просто необязательно устанавливать тему последней воли.
Ганима
Вот что я имел ввиду. Клиент не может отправить его как часть пакета подключения.
cogitoergosum