Wie wir gesehen haben, sind moderne IoT-Projekte oft komplex und erfordern in der Regel die Zusammenarbeit zwischen mehreren Anbietern und Teams. Da MQTT das Standardprotokoll für IoT ist, war eine verbesserte Interoperabilität und Transparenz zwischen Systemen eine wichtige Benutzeranforderung für MQTT Version 5. MQTT stellt sicher, dass Absender und Empfänger von Nachrichten vollständig entkoppelt sind. Der Abonnent (Empfänger), der eine Nachricht vom Broker erhält, befindet sich in einem separaten Nachrichtenfluss vom Herausgeber (Absender), der die Nachricht an den Broker sendet. Es gibt viele Anwendungsfälle, die eine Bestätigung des Nachrichteneingangs vom beabsichtigten Empfänger erfordern. Ein klassisches Beispiel ist das Öffnen der Tür Ihres Smart Home. Der Absender des Befehls “offene Tür” (in der Regel eine mobile App) möchte nicht nur wissen, wann und ob die Nachricht empfangen wurde, sondern auch das Ergebnis des Befehls. Diese so genannten “Business ACKs” sind der Hauptgrund, warum MQTT-Benutzer daran interessiert waren, das Anforderungs-Antwort-Muster in die MQTT 5-Spezifikation einzuführen. MQTT-Benutzer benötigten die Möglichkeit, End-to-End-Bestätigungen zwischen dem Absender und dem Empfänger einer Anwendungsnachricht bereitzustellen. Ähnlich wie bei anderen Funktionen in der neuen Protokollspezifikation wurde dieses Muster bereits von MQTTv3-Benutzern verwendet. Die Einführung von Antwortthemen, Korrelationsdaten und Antwortinformationen als Protokollfelder ermöglicht eine wesentlich erweiterbare, dynamischere und transparentere Anwendungsentwicklung mit dem Anforderungs-Antwort-Muster.
MQTT basiert auf asynchronem Messaging, das dem Veröffentlichungs-Abonnement-Paradigma folgt: Sender und Empfänger sind in Synchronität, Zeit und Raum voneinander entkoppelt, und 1:n-Beziehungen sind möglich. Es ist wichtig zu verstehen, dass das Anforderungs-Antwort-Muster von MQTT-Funktionen und löst Probleme auf eine andere Weise als synchrone, eins-zu-eins-basierte Protokolle wie HTTP. Eine MQTT-Antwort “beantwortet” in der Regel keine “Frage”, die die Anforderung darstellt. Es ist möglich, einen Anwendungsfall für MQTT auf eine Weise zu implementieren, die blockiert und eins-zu-eins-Messaging bereitstellt, das mit spezifischen Informationen basierend auf Parametern der Anforderung antwortet. In den meisten Anwendungsfällen verursacht die Anforderung jedoch eine bestimmte Aktion für den Empfänger, und die Antwort enthält das Ergebnis für diese Aktion. keine Sorge! Das wird deutlicher, wenn wir uns ein konkretes Beispiel ansehen. Die heutigen Funktionen erfüllen einen Teil dieser Benutzeranforderungen mit einer standardisierten Lösung, um ein Anforderungs-Antwort-Muster mit MQTT zu erreichen. Im Sinne einer transparenten Implementierung und einer besseren Standardisierung wurde mit der MQTT 5-Spezifikation die Response Information-Eigenschaft eingeführt.
