Forum: PC-Programmierung MQTT - Wie lange hält eine subscription?


von Murxi (Gast)


Lesenswert?

Hallo,
ich habe einen RaspberryPi mit MQTT Server aufgesetzt. Als Client dient 
ein ESP32 mit PubSubClient Library. Der Client subscribed beim Start 
einige Topics und published hin und wieder etwas. Nun soll das System 
über lange Zeit möglichst stabil laufen. Da gibt es bei mir aber noch 
einige Fragezeichen:

Was passiert z.B., wenn der Raspi/MQTT Server neu gestartet wird?
Sind die Subscriptions des Clients dann immer noch gültig?
Oder sollte der Client von Zeit zu Zeit alles neu subscriben?
Oder sogar immer mal wieder ein disconnect/connect durchführen?

von 5646835 (Gast)


Lesenswert?

Murxi schrieb:

> Was passiert z.B., wenn der Raspi/MQTT Server neu gestartet wird?

Dann müssen sich alle Clients neu verbinden da TCP ein 
verbindungsorientiertes Protokoll ist - oder verwendest du UDP?

von Murxi (Gast)


Lesenswert?

5646835 schrieb:
> Dann müssen sich alle Clients neu verbinden da TCP ein
> verbindungsorientiertes Protokoll ist - oder verwendest du UDP?

Ich verwende TCP.

Dann sollte wohl in regelmäßigen Zeitabständen der Verbindungstatus 
geprüft, und ggf. ein Reconnect + Resubscribe durchgeführt werden.

Danke!

von Rolf M. (rmagnus)


Lesenswert?

Murxi schrieb:
> Dann sollte wohl in regelmäßigen Zeitabständen der Verbindungstatus
> geprüft, und ggf. ein Reconnect + Resubscribe durchgeführt werden.

MQTT hat ein Keepalive schon integriert.

von Marco H. (damarco)


Lesenswert?

Du musst die Themen wieder Abonnieren. Ob du die letzte Messages des 
Themas auch erhältst hängt vom Retain Flag ab, welches beim publish 
gesetzt sein muss. Sobald du das Thema Abonnierst erhältst du die letzte 
Messages..

Wenn der Server neu gestartet wird, werden alle Sockets geschlossen. 
Dein Client bekommt das auf TCP/IP Ebene mit und versucht sich wieder zu 
verbinden... Ob dann nach Messages ausgeliefert werden die im Inflight 
Buffer mit QOS> 0 versendet wurden hängt vom Server ab.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.