Używam emqttd ( emqtt.io ). Chciałbym monitorować klientów łączących się i rozłączających z oddzielnym procesem, który subskrybowałby temat systemu, w którym publikowane są wiadomości o urodzeniu i woli. Jak to zrobić?
Używam emqttd ( emqtt.io ). Chciałbym monitorować klientów łączących się i rozłączających z oddzielnym procesem, który subskrybowałby temat systemu, w którym publikowane są wiadomości o urodzeniu i woli. Jak to zrobić?
Odpowiedzi:
Chciałbym monitorować klientów łączących się i rozłączających z oddzielnym procesem, który subskrybowałby temat systemu, w którym publikowane są wiadomości o urodzeniu i woli.
Podręcznik użytkownika emqtt pokazuje temat systemowy, który oferuje pewne statystyki brokera, tj. $SYS/brokers/${node}/stats/clients/count
podaje liczbę aktualnie podłączonych klientów. Pamiętaj, że nie będzie to zawierało żadnych szczegółowych informacji na temat podłączonych klientów - więc uważam, że nie jest to tutaj potrzebne.
Wiadomości „Ostatnia wola” (LWT, „Ostatnia wola” i „Testament”) nie są już tematem systemowym, ale zwykłym tematem ustawionym przez klienta podczas łączenia. Jeśli chcesz monitorować ten temat, po prostu subskrybuj go. Należy jednak pamiętać, że wiadomości LWT są odrzucane, jeśli klient rozłącza się z gracją, wysyłając wiadomość ODŁĄCZ (patrz blog hiveMQ , świetne czytanie btw).
Podręcznik użytkownika emqtt przedstawia lepszy sposób monitorowania łączenia i rozłączania klientów:
./bin/emqttd_ctl
Linii poleceń mogą być wykorzystane do zapytania i zarządzać maklera EMQ (nie działa w systemie Windows).
Myślę, że monitorowanie clients list
- lista wszystkich klientów MQTT - i clients show <ClientId>
- wyświetlanie klienta MQTT - jest tutaj najbardziej pomocne. Planowany oddzielny proces monitorowania klientów nie musi zatem subskrybować brokera, ale po prostu go wykorzystać ./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)
Cóż, nie jestem pewien co do wiadomości o urodzeniu, a LWT (Last Will and Testament) jest opcjonalne zgodnie ze specyfikacją. Tak więc niekoniecznie będziesz otrzymywać wiadomości, chyba że będziesz mieć brokera dostosowanego do takich wymagań.