Я использую emqttd ( emqtt.io ). Я хотел бы отслеживать клиентов, подключающихся и отключающихся от отдельного процесса, который будет подписываться на системную тему, где размещаются сообщения о рождении и будут. Как правильно это сделать?
Я использую emqttd ( emqtt.io ). Я хотел бы отслеживать клиентов, подключающихся и отключающихся от отдельного процесса, который будет подписываться на системную тему, где размещаются сообщения о рождении и будут. Как правильно это сделать?
Ответы:
Я хотел бы отслеживать клиентов, подключающихся и отключающихся от отдельного процесса, который будет подписываться на системную тему, где размещаются сообщения о рождении и будут.
Руководство пользователя 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)
Ну, не уверен насчет сообщения о рождении, и LWT (Last Will и Завет) необязательны согласно спецификации. Таким образом, вы не обязательно будете получать сообщения, если ваш брокер не настроен на такие требования.