HomeBlog MQTT Grundlagen

Persistente Sessions und Message Queuing – MQTT Fundamentals

von Ponlakshmi


MQTT Persistent session

Wussten Sie, dass der MQTT-Broker nach Abschaltung eines Clients neue Nachrichten für diesen Client speichern kann? Die Nachrichten werden so schnell gesendet, wie der Client wieder verbindet.MQT Wir sind in der Lageist der Name für diese Funktion inMQT. In diesem Beitrag werde ich beschreiben, wie es führt. Schauen wir uns das genauer an.

MQTT Persistent Sessions oder Clean Sessions

MQTDauer Sitzungwie zuvor angegeben, das Ablaufintervall gibt an, wie lange die Sitzung nach einer trennen. Betrachten Sie das folgende Szenario: Nehmen Sie an, Sie haben zweiMQTT Kundendie beide mit einerMQTT Broker. Ein MQTT-Client veröffentlicht ein Thema, während der andere es abonniert. Wenn der Anmelde-Client von der Broker unerwartet, es wird keine Nachrichten, die zu diesem Thema veröffentlicht werden, bis es wieder verbindet.


Wenn wir mit dem Broker verbinden, verwenden wir die Persistent Session oder Clean Session-Flags, um dies zu lösen Problem. Wenn sich ein Client mit dem Broker verbindet, hat der Client die Möglichkeit, eine persistente Sitzung anzufordern. Die Broker den Überblick über die Informationen des Kunden sowie die Themen, zu denen er abonniert wird. Der Broker wird Senden Sie alle unversehrten Nachrichten an den Client, wenn der Client nach einer Abschaltung wieder angeschlossen ist.

Eine saubere Sitzung einrichten

Wenn sich ein Client mit dem Broker verbindet, kann der Client eine persistente Session erstellen, indem er die cleanSession Flagge zu False. Diese Einstellung wird standardmäßig auf True gesetzt. Lassen Sie uns einen Blick darauf werfen, was eine persistente Session speichert.


  • Das Bestehen einer Sitzung (auch ohne Abonnements).
  • Das gesamte Abonnement des Kunden.
  • Der Client hat noch nicht alle Nachrichten in 1 oder 2 Flow on bestätigtQualität der Servicestufen (QoS).
  • Alle neuQo 1oder 2 Nachrichten, die der Client beim Abschalten verpasst.
  • AlleQoS 2Meldungen von Kunden werden noch nicht vollständig akzeptiert.

Wann sollte eine saubere Sitzung verwendet werden?

Wenn ein Client alle (oder / und fast alle) der Nachrichten von einem Thema, zu dem es hat empfangen und die Internet ist unzuverlässig, es ist wichtig, eine dauerhafte Sitzung zu verwenden.

Wie werden Client-Seiten-Aktionen von persistenten Sitzungen behandelt?

Schauen wir uns die Behandlung von Client-Seiten persistente Sitzungen an. Wenn Sie eine MQTT- persistente Sitzung wollen und sagen der Broker ich will ein Dauerhafte Sitzung in derINHALT Paket, es gibt eine kleine Flagge namens Session persistent und der Broker sagt Ihnen als ein Client, wenn der Broker Sie als Client erinnert oder wenn der Broker glaubt, dass Sie für den ersten verbinden Zeit. Und das bietet Ihnen einen bequemen Weg auf der Client-Seite zu bestimmen, ob Sie sich an IhreMQT Themen, oder wenn der Broker bereits Informationen über Sie hat. So ist dies etwas zu betrachten, und die meisten Bibliotheken Sie können überprüfen saubere Sitzungen, umDas ist der MQTTclientsdie federnd sind.

Nachricht Queuing

Dann gibt es eine Nachricht Queuing, die einzigartig für MQTT ist. Diese Nachrichten können per Client abgefragt werden. Nur für persistente Session-Clients können Sie die Nachrichtenlöschung verwenden. Wenn Sie ein aktives Abonnement und ein persistenter Session-Client, der vom Broker getrennt wird, wird der Broker alle löschenServicequalität (QoS 1 oder 2)Nachrichten, die Sie während der Trennung verpasst haben. Dies bedeutet, dass, wenn Sie für eine Weile getrennt sind und dann Reconnect, der Broker wird Nachrichten erhalten, die Sie verpasst haben, also auch wenn Sie auf der Clientseite verbunden sind, erhalten Sie die aktuellsten Informationen und wird keine Nachricht verpassen. So ist das wirklich toll, aber Sie brauchen eine hartnäckige Sitzung hier und Sie müssen die Qualität des Dienstes ein oder zwei Nachrichten hier. Denken Sie daran, dass Nachrichten mit einemQualität der Dienstleistungen Ich bin hier.werden nie abgeschreckt.


Wir haben bereits hartnäckige Sitzungen und Nachrichtenübermittlung diskutiert. Es ist möglich, dass wenn Ihr MQTT-Broker hat nicht abgelaufen Sitzungen, hartnäckige Sitzungen oder Warteschlangen, Sie sind anfällig für die Ablehnung von Service-Angriffen. Also, wenn du bist Arbeiten an einem professionelles Projekt, stellen Sie sicher, dass Sie eine MQTT, die alle wichtigen Operationen unterstützt und Konfigurationen.

Mehr über das Protokoll erfahren,