Ich möchte Clients überwachen, die eine Verbindung zu einem separaten Prozess herstellen und trennen, der ein Systemthema abonniert, in dem Geburts- und Willensnachrichten veröffentlicht werden.
Das Benutzerhandbuch von emqtt zeigt ein Systemthema, das einige Broker-Statistiken enthält, dh $SYS/brokers/${node}/stats/clients/count
die Anzahl der aktuell verbundenen Clients. Beachten Sie, dass hier keine Details zu den verbundenen Clients aufgeführt werden. Ich gehe davon aus, dass dies hier nicht erforderlich ist.
Last Will-Nachrichten (LWT, Last Will und Testament) sind kein Systemthema, sondern ein reguläres Thema, das vom Client während der Verbindung eingerichtet wurde. Wenn Sie dieses Thema überwachen möchten, abonnieren Sie es einfach. Beachten Sie jedoch, dass LWT-Nachrichten verworfen werden, wenn ein Client die Verbindung ordnungsgemäß durch Senden einer DISCONNECT-Nachricht trennt (siehe hiveMQ-Blog , übrigens großartig gelesen).
Das Benutzerhandbuch von emqtt bietet eine bessere Möglichkeit, das Verbinden und Trennen von Clients zu überwachen:
Die ./bin/emqttd_ctl
Befehlszeile kann zum Abfragen und Verwalten des EMQ-Brokers verwendet werden (funktioniert nicht unter Windows).
Ich denke, dass die Überwachung clients list
- alle MQTT-Clients auflisten - und clients show <ClientId>
- einen MQTT-Client anzeigen - hier am hilfreichsten ist. Der geplante separate Prozess zur Überwachung von Kunden muss daher nicht beim Broker abonniert werden, sondern wird einfach verwendet ./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)