Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 8488|Antwort: 0

Mehrere EMQTT-Wissenspunkte

[Link kopieren]
Veröffentlicht am 15.02.2019 10:25:09 | | |
Bevor ich mit dem Text beginne, muss ich mich beim Netizen "Xiaolong" und den Netizens in der emqtt.io Gruppe für ihre Hilfe bedanken. Ich habe gerade angefangen, MQTT zu benutzen. Es gibt viele Dinge, die ich nicht verstehe. Als ich in der emqtt.io Gruppe nach der Lösung gefragt habe, hat mir "Xiaolong" eine detaillierte Erklärung einiger MQTT-Wissenspunkte gegeben und Lösungen geliefert, vielen Dank. Ich denke, einige der darin genannten Dinge sind für Anfänger immer noch sehr nützlich, daher ist hier eine Zusammenfassung meines Chatverlaufs mit "Xiaolong" zu deiner Referenz.

Frage 1: Wenn das MCU einen begrenzten Cache und eine begrenzte Rechenleistung hat, ist es unmöglich, Nachrichten gleichzeitig zu senden, wie kann man in diesem Fall Nachrichten über MQTT veröffentlichen?
Zuerst baust du den Header des Publish-Protokolls zusammen, schreibst die Länge der Nutzlast darin, schicke sie über TCP und schicke dann die Nutzlast Stück für Stück. Wenn du die gesamte Nutzlastlänge nicht bekommst, ist das schwierig. Da man einen Publish Protocol Report sendet, liest der Server nach dem Lesen der Länge der Payload im Kopf weiter, bis die erforderliche Länge erreicht ist, und dann wird das Veröffentlichen gezählt. Daher musst du zuerst die Länge des veröffentlichten Inhalts bestätigen, dann den Publicer-Packet-Header gruppieren, die Nutzlastlänge einfüllen, tcp:send(head) und dann die Nutzlast einzeln senden, zum Beispiel 1k auf einmal, oder die Daten gemäß dem normalen TCP senden und sie vollständig senden, selbst wenn die Veröffentlichung vorbei ist. Der nächste Sendetermin gehört zur TCP-Schicht, und du musst nicht eingreifen. Wenn in der TCP-Schicht das Senden fehlschlägt, muss es ein Problem mit dem Socket geben, die Verbindung ist unterbrochen, man muss sich wieder mit dem MQTT-Server verbinden, wenn es nicht abgeschlossen ist, endet auch die Serversitzung, das heißt, der Server hat die Daten nicht empfangen. Verbinden Sie sich erneut, Sie müssen die Nachricht erneut senden, solange sie getrennt ist, müssen Sie sich erneut verbinden. Ob Sie die Daten erneut senden möchten, hängt davon ab, ob Sie die vorherigen Daten gespeichert haben. Außerdem kannst du, wenn die Nachricht wichtig ist, qos=1 oder 2 verwenden, um sicherzustellen, dass der Server die Nachricht empfängt, qos=1 erfordert eine Rundreise, qos=2 vier Rundreisen, qos=0 ist sehr einfach, solange du sie versendest, spielt das keine Rolle.

Frage 2: Gibt es viele Open-Source-Ressourcen für MQTT?

Der Hyperlink-Login ist sichtbar.Es gibt viele von ihnen

Frage 3: Warum stellt MQTT im Allgemeinen keine Persistenzfunktionen bereit?

Das MQTT-Protokoll ist nach dem Online-Design des Geräts entworfen, und die Daten werden im Speicher gespeichert

Frage 4: Ist MQTT speicherfressig?

MQTT ist speicherintensiver, und die gemessenen EMQTT-Daten betragen: 38W, Speicher 14G, CPU 15 %

Frage 5: Wie ist die Beziehung zwischen Sitzung und Klient?

Wenn zum Beispiel ein Board als Client eine MQTT-Verbindungsanfrage zur Verbindung mit dem MQTT-Server startet, zum Beispiel handelt es sich um einen EMQTT-Dienst; nachdem der EMQTT-Server die Verbindungsanfrage dieser Platine empfangen hat, stellt er eine TCP-Verbindung mit der Platine auf der TCP-Schicht her, und innerhalb von EMQTT wird ein Prozess generiert, der mit diesem Board kommuniziert, und es wird ebenfalls ein Prozess namens Session generiert. Dieses Sessoin ist ein Thema, das sich auf die Verwaltung des Abonnements dieses Boards spezialisiert hat, und andere Boards senden es ebenfalls an die Sitzung, die diesem Board entspricht, wenn sie das Thema veröffentlichen, das für dieses Board von Interesse ist; wenn diese Sitzung das abonnierte Thema erhält und feststellt, dass der Client noch lebt, wird die Daten über diesen Client über TCP an dieses Board gesendet, falls festgestellt wird, dass der Client nicht mehr da ist, das heißt, das Board und der Server sind defekt. Dann speichert die Sitzung zuerst das empfangene Abonnementthema in der Sitzung, und beim nächsten Verbinden des Board und cleansession=false wird die Sitzung nicht gelöscht, und beim Verbinden wird die zuvor empfangene Abonnement-Nachricht an das Board gesendet, was wahrscheinlich die Bedeutung ist.

Frage 6: Wie erkennt emqtt, dass der verbundene Client derselbe ist?

Beim Verbinden musst du eine Client-ID festlegen, diese ID kann nicht gesetzt werden; wenn nicht gesetzt, wird automatisch eine eindeutige ID auf der Emqtt-Serverseite generiert. Wenn du die Session nutzen möchtest, musst du eine eindeutige ID haben, du kannst IMEI verwenden. Wenn Sie Offline-Nachrichten empfangen müssen, müssen Sie eine bestimmte ID verwenden.

Frage 7: Kann die Sitzungszeit von emqtt angepasst werden?

Du kannst die Sitzungszeit ändern, jetzt sind es 48 Stunden, du kannst sie auf eine Woche ändern, wenn du sie dauerhaft haben möchtest, fürchte ich, dass EMQTT nicht geeignet ist.

Frage 8: Ist die Zugriffsberechtigung von emqtt in der Konfigurationsdatei geschrieben?

etc/acl.config

Frage 9: Wie ist die Verteilung von emqtt?

Verteilt bedeutet einfach, mehrere deiner Server miteinander zu verbinden, einen oder mehrere davon, solange sie nicht alle kaputt sind, kann emqtt normal laufen. EMQTT-Daten werden von mehreren Knoten geteilt, und wenn es ein Problem mit einem Knoten gibt, gehen die Daten nicht verloren, sondern die Sitzungsdaten auf dem Knoten.









Vorhergehend:Erste Begegnung mit der EMQX (EMQTTD) Nachrichtenwarteschlange
Nächster:jQuery-Studiennotizen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com