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?
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?
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.