Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Leitfaden erfahren Sie, wie Sie das MQTT v5 Anforderung/Antwort-Messagingmuster verwenden, um einen Befehls-Antwort-Fluss mit dem MQTT-Broker zu implementieren. Stellen Sie sich ein Beispielszenario vor, in dem eine Cloudanwendungen Befehle an Geräte sendet und Antworten von den Geräten erhält.
Voraussetzungen
- Sie verfügen über einen Event Grid-Namespace, der mit aktiviertem MQTT Vermittler erstellt wurde. In diesem Schnellstart: Veröffentlichen und Abonnieren eines MQTT-Themas erfahren Sie, wie Sie den Namespace und Unterressourcen erstellen und ein MQTT-Thema veröffentlichen/abonnieren.
Konfiguration erforderlich im Event Grid-Namespace zum Implementieren des Anforderung/Antwort-Messagingmusters
Hier ist die Beispielkonfiguration zum Erreichen des Anforderung/Antwort-Messagingmusters mithilfe des MQTT-Brokers.
ZS-Zertifikat
Fügen Sie das CA-Zertifikat hinzu, das zum Signieren der Clientzertifikate verwendet wird.
Clients
- Registrieren Sie die Cloudanwendung als Client im Namespace. Fügen Sie dem Client ein Attribut namens „type“ mit dem Wert „cloudApp“ hinzu.
- Registrieren Sie die Geräte als Clients im Namespace. Fügen Sie das Attribut „type“ zu den Clients mit dem Wert „device“ hinzu.
Sie können jede unterstützte Authentifizierungsmethode verwenden. Diese Beispielkonfiguration zeigt die auf einer CA-Zertifikatskette basierende Authentifizierung und geht davon aus, dass der Client-Authentifizierungsname im Feld „Betreff“ des Client-Zertifikats steht.
Clientgruppen
Erstellen Sie zwei Clientgruppen, eine für den Cloudanwendungsclient und eine für alle Geräte.
Die Clientgruppe „cloudAppGrp“ enthält die Clients mit dem Wert des Attributs „type“ auf „cloudApp“.
Die Clientgruppe „devicesGrp“ enthält alle Clients vom Typ „device“.
Themenbereiche
Erstellen Sie den Themenbereich „requestDesiredProperties“ mit der Themenvorlage „devices/+/desired“, in dem die Cloudanwendung gewünschte Eigenschaftsanforderungen veröffentlicht. Mithilfe von „Wildcard“ kann die Cloudanwendung eine Anforderung auf jedem Gerät veröffentlichen.
Erstellen Sie den Themenbereich „responseReportedProperties“ mit der Themenvorlage „devices/+/reported“, für die die Cloudanwendung berichteten Eigenschaftenantworten von Geräten empfängt.
Erstellen Sie den Themenbereich „deviceDesiredSub“ mit der Themenvorlage „devices/${client.authenticationName}/desired“, für die Geräte die gewünschten Eigenschaftsanforderungen von der Cloudanwendung erhalten sollen. Die Variable „Authentifizierungsname“ wird verwendet, um sicherzustellen, dass ein Gerät Nachrichten empfangen kann, die nur für dieses Gerät bestimmt sind.
Erstellen Sie den Themenbereich „deviceReportedPub“ mit der Themenvorlage „devices/${client.authenticationName}/reported“, auf die Geräte gemeldete Eigenschaftenantworten veröffentlichen.
Berechtigungsbindungen
Erstellen Sie Berechtigungsbindungen, die es der Cloudanwendungsgruppe ermöglichen, auf Anforderungsthema zu veröffentlichen, und abonnieren Sie das Antwortthema. Die Gerätegruppe abonniert das Anforderungsthema und veröffentlicht das Antwortthema.
Erstellen Sie die Berechtigungsbindung „clientAppDesiredPub“, die „cloudAppGrp“ mit Publisher-Zugriff auf den Themenbereich „requestDesiredProperties“ gewährt.
Erstellen Sie die Berechtigungsbindung „clientAppReportedSub“, die „cloudAppGrp“ mit Abonnentenzugriff auf den Themenbereich „responseReportedProperties“ gewährt.
Erstellen Sie die Berechtigungsbindung „deviceDesiredSub“, die „devicesGrp“ mit Abonnentenzugriff auf den Themenbereich „deviceDesiredSub“ gewährt.
Erstellen Sie die Berechtigungsbindung „deviceReportedPub“, die „devicesGrp“ mit Publisher-Zugriff auf den Themenbereich „deviceReportedPub“ gewährt.
Anzeigen von Anforderungsantwortnachrichten mithilfe der MQTTX-Anwendung
Verbinden Sie die Cloudanwendung und Geräte mit dem MQTT-Broker mithilfe der MQTTX-Anwendung.
Hinzufügen von „devices/+/reported“ als Abonnement zum Cloudanwendungsclient
Ihre eigenen Anforderungsthemen als Abonnements zu Geräten hinzufügen. Fügen Sie z. B. „device/device1/desired“ als Abonnement zum Client „device1“ hinzu.
Die Cloudanwendung veröffentlicht eine Anforderung an device2 im Thema „device/device2/desired“, und enthält ein Antwortthema „device/device2/reported“. Die Cloudanwendung enthält Korrelationsdaten als „device2-tempupdate1“.
Das device2 empfängt die Nachricht im Thema „device/device2/desired“ und meldet den aktuellen Eigenschaftenstatus im Antwortthema „device/device2/reported“ an den Cloudanwendungsclient. Außerdem enthält device2 Korrelationsdaten als „device2-tempupdate1“, wodurch die Cloudanwendung die Antwort auf die ursprüngliche Anforderung zurückverfolgen kann.
Hinweis
- Diese MQTT-Nachrichten können über Event Grid-Abonnements weitergeleitet und in einen Speicher oder Cache geschrieben werden, um den gewünschten und aktuellen Status eines Geräts nachzuverfolgen.
- Ereignisse im Lebenszyklus von Clients wie „connected“ und „disconnected“ können verwendet werden, um die Verfügbarkeit eines Geräts zu verfolgen und bei Bedarf Anforderungen erneut zu senden.
- Das Anforderung/Antwort-Messagingmuster kann auch in MQTT v3.1.1 erreicht werden, indem das Thema „Antwort“ in die Nutzdaten der Anforderungsnachricht eingeschlossen wird. Der Geräteclient muss die Nutzdaten der Nachricht analysieren, das Antwortthema identifizieren und die Antwort in diesem Thema veröffentlichen.
Nächste Schritte
- Lernprogramm: Weiterleiten von MQTT-Nachrichten an Azure Event Hubs mithilfe von Namespacethemen
- Lernprogramm: Weiterleiten von MQTT-Nachrichten an Azure Functions mithilfe von benutzerdefinierten Themen
- Erfahren Sie mehr über Clientlebenszyklusereignisse
- Codebeispiele finden Sie in diesem Repository.