Czy klient MQTT może zasubskrybować utworzony przez siebie temat?

18

W moim rozumieniu w MQTT temat jest tworzony, gdy klient opublikuje coś z odpowiednią nazwą tematu.

Nie ma potrzeby konfigurowania tematu, wystarczy opublikować na nim temat.

Od tutaj .

Czy klient może subskrybować własny temat po jego opublikowaniu, utworzeniu? Nie mogłem znaleźć żadnych ograniczeń w specyfikacjach . Nie jest wymienione jako możliwe nieprawidłowe zachowanie ani:

5.4.8 Wykrywanie nietypowych zachowań

Implementacje serwera mogą monitorować zachowanie klienta w celu wykrycia potencjalnych incydentów bezpieczeństwa. Na przykład:

  • Powtarzane próby połączenia
  • Powtarzane próby uwierzytelnienia
  • Nieprawidłowe zakończenie połączeń
  • Skanowanie tematów (próby wysłania lub zasubskrybowania wielu tematów)
  • Wysyłanie niedostarczonych wiadomości (brak subskrybentów tematów)
  • Klienci, którzy łączą się, ale nie wysyłają danych

Na tej podstawie uważam, że jest to z pewnością możliwe. Jestem więc zainteresowany, jakie są przypadki użycia tej funkcji?

Dlaczego standard dopuszcza taki mechanizm, czy śledzenie właściciela tematów byłoby skomplikowane? Zamiast tego pozwala po prostu klientom zasubskrybować własny temat.

Jednym z przykładów użycia, o którym mogę myśleć, jest to, że w ten sposób klient może zweryfikować opublikowane dane.

Bence Kaulics
źródło

Odpowiedzi:

19

Tak, można subskrybować utworzony przez siebie temat.

Klient MQTT może być jednocześnie wydawcą i subskrybentem. W terminologii MQTT klient obejmuje zarówno subscribersi publishers.

Jestem zainteresowany, jakie są przypadki użycia tej funkcji?

Możliwym przypadkiem użycia (zakładam) jest to, że załóżmy, że istnieją trzy klienty (x, y, z) subskrybujące temat x-topicutworzony przez x. Za każdym razem, gdy wiadomość zostanie opublikowana x-topic, wszyscy subskrybujący ten temat otrzymają wiadomość. Jeśli yopublikuje wiadomość w temacie x-topic(zakładam, że można to zrobić), jeśli xnie zasubskrybuje tego tematu, mimo że utworzył ten temat, nie otrzyma wiadomości.

Tak więc klient musi subskrybować temat, aby otrzymywać wiadomości, mimo że jest to oryginalny twórca tego tematu.

Mechanizm ten można jednak kontrolować za pomocą pośredników jako medium.

brawokeyl
źródło
Tak, ta opcja przyszła mi do głowy. Tylko nie byłem pewien, czy nowy klient może publikować na istniejący temat, z którego korzysta już inny wydawca.
Bence Kaulics,
Tak, nowy klient może publikować na istniejący temat. Pamiętaj, że klienci nie komunikują się bezpośrednio, każda publikacja i subskrypcja odbywa się za pośrednictwem brokera.
brawokeyl,
0

Tak.

Klienci MQTT są podłączeni do brokera, którym może być chmura lub inne urządzenie.

Nie ma czegoś takiego jak tworzenie tematu. Są one używane jako nagłówek wiadomości. Więc jeśli twój klient zasubskrybował temat i jeśli opublikował coś na ten temat, wiadomość zostanie ponownie odebrana przez brokera do klienta.

Przykładami dobrych brokerów są Mosquitto do uruchamiania na urządzeniach i CloudMqtt dla brokera opartego na chmurze

Hitesh Pratyush V.
źródło
4
To tak naprawdę nie rozszerza zasobu wiedzy poza to, co udzieliła inna odpowiedź już rok temu. Możesz dodawać nowe odpowiedzi nawet do odpowiedzi na pytania. Odpowiedzi te powinny jednak oferować dodatkowe lub zaktualizowane informacje na temat pytania lub rozwiązania.
Helmar