Kann ein MQTT-Client ein von ihm erstelltes Thema abonnieren?

18

Nach meinem Verständnis wird in MQTT ein Thema erstellt, sobald ein Client etwas mit dem entsprechenden Themennamen veröffentlicht.

Es ist nicht erforderlich, ein Thema zu konfigurieren, es reicht aus, darauf zu veröffentlichen.

Von hier .

Ist es einem Kunden möglich, ein eigenes Thema zu abonnieren, nachdem es veröffentlicht und erstellt wurde? Ich konnte keine Einschränkungen in den Spezifikationen finden . Es wird auch nicht als mögliches abnormales Verhalten aufgeführt:

5.4.8 Auffälliges Verhalten feststellen

Serverimplementierungen überwachen möglicherweise das Clientverhalten, um potenzielle Sicherheitsvorfälle zu erkennen. Beispielsweise:

  • Wiederholte Verbindungsversuche
  • Wiederholte Authentifizierungsversuche
  • Abnormale Beendigung von Verbindungen
  • Themenscan (Versuche, viele Themen zu senden oder zu abonnieren)
  • Senden unzustellbarer Nachrichten (keine Abonnenten der Themen)
  • Clients, die eine Verbindung herstellen, aber keine Daten senden

Auf dieser Grundlage denke ich, dass es sicherlich möglich ist. Ich interessiere mich also für die Anwendungsfälle dieser Funktion.

Warum erlaubt der Standard einen solchen Mechanismus, wäre es zu kompliziert, den Eigentümer der Themen zu verfolgen? Stattdessen können Kunden einfach ihr eigenes Thema abonnieren.

Ein Anwendungsfall, den ich mir vorstellen kann, ist, dass ein Client auf diese Weise seine veröffentlichten Daten überprüfen kann.

Bence Kaulics
quelle

Antworten:

19

Ja, es ist möglich, ein selbst erstelltes Thema zu abonnieren.

Ein MQTT-Client kann gleichzeitig Herausgeber und Abonnent sein. In MQTT-Begriffen umfasst ein Client sowohl subscribersals auch publishers.

Ich interessiere mich für die Anwendungsfälle dieser Funktion.

Ein möglicher Anwendungsfall (ich nehme an) ist, dass angenommen wird, dass drei Clients (x, y, z) ein von x-topicerstelltes Thema abonniert haben x. Wann immer eine Nachricht veröffentlicht x-topicwird, erhält jeder, der dieses Thema abonniert hat, die Nachricht. Wenn yeine Nachricht zu einem Thema veröffentlicht wird x-topic(ich nehme an, dass dies möglich ist), xwird die Nachricht nicht empfangen , wenn das Thema nicht abonniert wird, obwohl es das Thema erstellt hat.

Ein Client muss also ein Thema abonniert haben, um Nachrichten zu empfangen, obwohl dies der ursprüngliche Ersteller dieses Themas ist.

Der Mechanismus kann jedoch durch die Verwendung von Brokern als Medium gesteuert werden.

bravokeyl
quelle
Ja, diese Option ist mir in den Sinn gekommen. Ich war mir nur nicht sicher, ob ein neuer Client in einem vorhandenen Thema veröffentlichen kann, das bereits von einem anderen Publisher verwendet wurde.
Bence Kaulics
Ja, ein neuer Kunde kann in einem vorhandenen Thema veröffentlichen. Denken Sie daran, dass Kunden nicht direkt kommunizieren. Jede Veröffentlichung und jedes Abonnement erfolgt über einen Broker.
Bravokeyl
0

Ja.

MQTT-Clients sind mit einem Broker verbunden, der eine Cloud oder ein anderes Gerät sein kann.

Es gibt keine Themenerstellung. Sie werden als Überschrift für eine Nachricht verwendet. Wenn Ihr Kunde ein Thema abonniert hat und etwas zu diesem Thema veröffentlicht, wird die Nachricht über den Broker erneut an den Kunden gesendet.

Beispiele für gute Broker sind Mosquitto für die Ausführung auf Geräten und CloudMqtt für Cloud-basierte Broker

Hitesh Pratyush V
quelle
4
Dies erweitert das Wissen nicht wirklich über das hinaus, was die andere Antwort bereits vor einem Jahr geliefert hat. Sie können auch zu beantworteten Fragen neue Antworten hinzufügen. Diese Antworten sollten jedoch zusätzliche oder aktualisierte Einblicke in die Frage oder die Lösung bieten.
Helmar