FACHWISSEN · TECHNIK & SICHERHEITINSIGHTS · TECHNOLOGY & SECURITY
MQTT-Statuswerte: Warum eine sofort empfangene Nachricht trotzdem alt sein kannMQTT status values: why an immediately received message can still be old

Eine Anwendung verbindet sich mit einem Nachrichtendienst und erhält sofort einen Zustandswert. Die schnelle Zustellung wirkt aktuell. Tatsächlich kann der Wert schon deutlich früher veröffentlicht worden sein. Gespeicherte Zustandsnachrichten erleichtern den Einstieg neuer Empfänger, benötigen aber eine ausdrückliche Regel zur Aktualität.
Gespeicherter Zustand ist kein neuer Messvorgang
Eine retained veröffentlichte Nachricht kann beim Dienst als letzter Wert zu einem Thema gespeichert werden. Ein neuer passender Empfänger kann sie nach dem Abonnieren erhalten. Die Ankunftszeit beim Empfänger entspricht deshalb nicht zwangsläufig dem Zeitpunkt der Messung. Diese Unterscheidung gehört in Datenmodell und Oberfläche.
Erfassungszeit und Gültigkeit mitführen
Ein fiktives Gerät meldet einen Betriebszustand zusammen mit Erfassungszeit und fachlichem Gültigkeitsstatus. Die Anzeige kennzeichnet einen zu alten Wert, statt ihn unverändert als aktuelle Information auszugeben. Die passende Altersgrenze hängt von der Messaufgabe ab. Ein Temperaturtrend und eine unmittelbar benötigte Freigabebedingung stellen unterschiedliche Anforderungen.
Ablauf und Verbindungsstatus nicht verwechseln
Protokollfunktionen zur begrenzten Lebensdauer von Nachrichten können helfen, alte Einträge nicht unbegrenzt vorzuhalten. Ihre Verfügbarkeit und genaue Wirkung richten sich nach der eingesetzten Protokollversion und Konfiguration. Ein verbundenes Gerät beweist zudem noch keinen frisch erfassten Wert; umgekehrt kann nach einer Trennung ein zuvor gültiger Wert weiterhin lesbar sein.
Anwendungstests müssen Wiederanlauf einschließen
Eine sinnvolle Abnahme prüft einen neuen Empfänger, einen länger unterbrochenen Sender und einen veralteten gespeicherten Wert. Für jeden Fall wird festgelegt, ob die Anwendung anzeigen, warnen oder eine Aktion unterlassen soll. Die zugesicherte Zustellung einer Nachricht beantwortet eine andere Frage als ihre fachliche Aktualität. Deshalb dürfen Transporterfolg und Freigabe einer darauf aufbauenden Handlung nicht ohne zusätzliche Prüfung gleichgesetzt werden.
An application connects to a messaging service and immediately receives a status value. Fast delivery looks current, but the value may have been published much earlier. Retained state messages help new subscribers get started, yet require an explicit rule for freshness.
Stored state is not a fresh measurement
A publication marked as retained can be stored by the service as the latest value for a topic. A matching new subscriber may receive it after subscribing. Its arrival time therefore need not equal the acquisition time. This distinction belongs in both the data model and the user interface.
Carry acquisition time and validity
A fictional device reports operating state together with acquisition time and business validity. The display marks a value that is too old rather than presenting it unchanged as current information. A suitable age threshold depends on the measurement task. A temperature trend and an immediate authorisation condition impose different requirements.
Do not confuse expiry with connection state
Protocol features limiting message lifetime can help avoid keeping old entries indefinitely. Their availability and exact behaviour depend on protocol version and configuration. A connected device does not establish that a value was recently acquired. Conversely, a previously valid value may remain readable after the device disconnects.
Include restart cases in application testing
Useful acceptance cases include a new subscriber, a sender disconnected for a long time and an outdated retained value. Define whether the application should display, warn or refrain from acting in each case. Assurance about message delivery answers a different question from business freshness. Transport success and approval of an action based on that message must therefore not be treated as equivalent without further validation.