Abbonati alla nascita di MQTT e argomenti? (Emqttd)


11

Sto eseguendo emqttd ( emqtt.io ). Vorrei monitorare i client che si connettono e si disconnettono da un processo separato che si iscriverebbe a un argomento di sistema in cui vengono pubblicati i messaggi di nascita e testamento. Qual è il modo giusto per farlo?


3
Benvenuti in IoT SE. Puoi approfondire un po 'di più sulla configurazione? Su quale tipo di macchina stai eseguendo emqttd e in quale versione?
Helmar

Risposte:


5

Vorrei monitorare i client che si connettono e si disconnettono da un processo separato che si iscriverebbe a un argomento di sistema in cui vengono pubblicati i messaggi di nascita e testamento.

La Guida dell'utente di emqtt mostra un argomento di sistema che offre alcune statistiche sui broker, ovvero $SYS/brokers/${node}/stats/clients/countfornisce il conteggio dei client attualmente connessi. Si noti che questo non elencherà alcun dettaglio sui client connessi, quindi presumo che non sia quello che serve qui.

I messaggi Last will (LWT, Last Will and Testament) non sono un argomento di sistema ma un argomento normale impostato dal client durante la connessione. Se vuoi monitorare quell'argomento, iscriviti semplicemente ad esso. Si noti tuttavia che i messaggi LWT vengono scartati se un client si disconnette correttamente inviando un messaggio DISCONNECT (consultare il blog hiveMQ , ottima lettura tra l'altro).

La Guida dell'utente di emqtt presenta un modo migliore per monitorare la connessione e la disconnessione dei client:

La ./bin/emqttd_ctlriga di comando può essere utilizzata per interrogare e amministrare il broker EMQ (non funziona su Windows).

Penso che il monitoraggio clients list- elenca tutti i client MQTT - e clients show <ClientId>- mostri un client MQTT - siano di grande aiuto qui. Pertanto, il processo separato pianificato per monitorare i clienti non deve abbonarsi al broker, ma semplicemente utilizzarlo ./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)

Molto utile. Grazie per aver dedicato del tempo. emqttd_ctl potrebbe fornire una soluzione parziale ma, avendo a disposizione un pubsub, avrei sperato che tu potessi usare quel meccanismo per creare avvisi. Immagino sia qualcosa che potrei ancora far rispettare richiedendo ai clienti di pubblicare messaggi di nascita e volontà.
Fabien Papleux,

1

Bene, non sono sicuro del messaggio di nascita e LWT (Last Will and Testament) è facoltativo secondo le specifiche. Pertanto, non riceveresti necessariamente messaggi se non avessi il tuo broker personalizzato per tali requisiti.


LWT è il broker che agisce per conto del client disconnesso. Implementazione non facoltativa per il broker. È semplicemente facoltativo per il cliente impostare un ultimo argomento.
Ghanima,

Questo è ciò che intendevo. Il client potrebbe non inviarlo come parte del pacchetto connect.
cogitoergosum,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.