Suscribirse a MQTT nacimiento y ¿temas? (emqttd)

11

Estoy ejecutando emqttd ( emqtt.io ). Me gustaría monitorear a los clientes que se conectan y desconectan de un proceso separado que se suscribirá a un tema del sistema donde se publicarán los mensajes de nacimiento y voluntad. ¿Cuál es la forma correcta de hacer eso?

Fabien Papleux
fuente
3
Bienvenido a IoT SE. ¿Puedes elaborar un poco más sobre la configuración? ¿En qué tipo de máquina está ejecutando emqttd y en qué versión?
Helmar

Respuestas:

5

Me gustaría monitorear a los clientes que se conectan y desconectan de un proceso separado que se suscribirá a un tema del sistema donde se publicarán los mensajes de nacimiento y voluntad.

La Guía del usuario de emqtt muestra un tema del sistema que ofrece algunas estadísticas de intermediario, es decir, $SYS/brokers/${node}/stats/clients/countproporciona el recuento de clientes conectados actualmente. Tenga en cuenta que esto no enumerará ningún detalle sobre los clientes conectados, así que supongo que no es lo que se necesita aquí.

Los mensajes de última voluntad (LWT, Última voluntad y Testamento) no son un tema del sistema, sino un tema regular según lo configurado por el cliente durante la conexión. Si desea monitorear ese tema, simplemente suscríbase. Sin embargo, tenga en cuenta que los mensajes LWT se descartan si un cliente se desconecta con gracia mediante el envío de un mensaje DESCONEXIÓN (consulte el blog hiveMQ , gran lectura por cierto).

La Guía del usuario de emqtt presenta una mejor manera de monitorear la conexión y desconexión de clientes:

La ./bin/emqttd_ctllínea de comando podría usarse para consultar y administrar el bróker EMQ (no funciona en Windows).

Creo que el monitoreo clients list- enumerar todos los clientes MQTT - y clients show <ClientId>- mostrar un cliente MQTT - es más útil aquí. Por lo tanto, el proceso separado planificado para monitorear clientes no necesita suscribirse al corredor, sino simplemente utilizarlo ./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)
Ghanima
fuente
Muy útil. Gracias por tomarse el tiempo. emqttd_ctl podría proporcionar una solución parcial pero, teniendo un pubsub a nuestra disposición, hubiera esperado que pudieras usar ese mecanismo para crear alertas. Supongo que es algo que aún podría aplicar exigiendo a los clientes que publiquen mensajes de nacimiento y testamento.
Fabien Papleux el
1

Bueno, no estoy seguro sobre el mensaje de nacimiento y LWT (Last Will and Testament) es opcional según las especificaciones. Por lo tanto, no necesariamente recibiría mensajes a menos que tuviera su corredor personalizado para tales requisitos.

cogito ergo sum
fuente
LWT es el agente que actúa en nombre del cliente desconectado. Implementar eso no es opcional para el corredor. Es simplemente opcional que el cliente configure un último tema de voluntad.
Ghanima
Eso es a lo que me refiero. Es posible que el cliente no envíe como parte del paquete de conexión.
cogitoergosum