Subskrybujesz narodziny MQTT i czy tematy? (emqttd)

11

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ć?

Fabien Papleux
źródło
3
Witamy w IoT SE. Czy możesz bardziej szczegółowo opracować konfigurację? Na jakim komputerze używasz emqttd iw jakiej wersji?
Helmar

Odpowiedzi:

5

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/countpodaje 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_ctlLinii 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)
Ghanima
źródło
Bardzo przydatne. Dzięki za poświęcenie czasu. emqttd_ctl może zapewnić częściowe rozwiązanie, ale mając do dyspozycji pubsub, mam nadzieję, że możesz użyć tego mechanizmu do tworzenia alertów. Wydaje mi się, że jest to coś, co nadal mogę egzekwować, wymagając od klientów publikowania wiadomości o urodzeniu i woli.
Fabien Papleux
1

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ń.

Myślę, więc jestem
źródło
LWT jest brokerem działającym w imieniu odłączonego klienta. Wdrażanie, które nie jest opcjonalne dla brokera. Klient może jedynie skonfigurować temat testamentu.
Ghanima,
To miałem na myśli. Klient nie może wysyłać w ramach pakietu Connect.
cogitoergosum