Tutorial: Weiterleiten von MQTT-Nachrichten in Azure Event Grid zu Azure Functions mithilfe von benutzerdefinierten Themen – Azure-Portal
In diesem Tutorial erfahren Sie, wie Sie MQTT-Nachrichten, die von einem Azure Event Grid-Namespace empfangen werden, über ein benutzerdefiniertes Ereignisrasterthema an eine Azure-Funktion weiterleiten, indem Sie die folgenden Schritte ausführen:
Falls Sie nicht über ein Azure-Abonnement verfügen, können Sie sich für eine kostenlose Testversion registrieren.
Erstellen einer Azure-Funktion mithilfe eines Event Grid-Triggers
Folgen Sie den Anweisungen unter Erstellen einer Azure-Funktion mit Visual Studio Code, verwenden Sie jedoch den Azure Event Grid Trigger anstelle des HTTP-Triggers. Der Code sollte etwa dem folgenden Beispiel entsprechen:
using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class MyEventGridTriggerFunc
{
private readonly ILogger<MyEventGridTriggerFunc> _logger;
public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
{
_logger = logger;
}
[Function(nameof(MyEventGridTriggerFunc))]
public void Run([EventGridTrigger] CloudEvent cloudEvent)
{
_logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
}
}
}
Sie verwenden diese Azure-Funktion als Ereignishandler für das Abonnement eines Themas weiter unten in diesem Tutorial.
Hinweis
- Erstellen Sie alle Ressourcen in der gleichen Region.
- Dieses Tutorial wurde mit einer Azure-Funktion getestet, die (isolierte) .NET 8.0 Runtime-Stapel verwendet.
Erstellen eines Event Grid-Themas (benutzerdefiniertes Thema)
Erstellen eines Event Grid-Themas Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Themas mithilfe des Portals. Wenn Sie das Event Grid-Thema erstellen, wählen Sie auf der Registerkarte Erweitert für Event Schema Cloud Event Schema v1.0 aus.
Hinweis
Verwenden Sie das Cloudereignisschema überall in diesem Tutorial.
Hinzufügen eines Abonnements zum Thema mithilfe der Funktion
In diesem Schritt erstellen Sie ein Abonnement für das Thema „Event Grid“ mithilfe der zuvor erstellten Azure-Funktion.
Wählen Sie auf der Themenseite „Event Grid“ Abonnements auf der linken Navigationsleiste aus.
Führen Sie auf der Seite Ereignisabonnement erstellen diese Schritte aus:
Führen Sie auf der Seite Azure-Funktion auswählen diese Schritte aus:
Wählen Sie für Abonnement Ihr Azure-Abonnement aus.
Wählen Sie als Ressourcengruppe die Ressourcengruppe mit Ihrer Azure-Funktion aus.
Wählen Sie als Function App die Funktions-App aus, die über die Funktion verfügt.
Wählen Sie als Slot Produktion aus.
Wählen Sie als Funktion Ihre Azure-Funktion aus.
Wählen Sie dann unten auf der Seite Auswahl bestätigen aus.
Wählen Sie auf der Seite Ereignisabonnement erstellen die Option Erstellen aus.
Auf der Seite Event Subscriptions sollte das von Ihnen erstellte Abonnement angezeigt werden.
Erstellen von Namespaces, Clients, Themenräumen und Berechtigungsbindungen
Folgen Sie den Anweisungen aus dem Schnellstart: Veröffentlichen und Abonnieren von MQTT-Nachrichten mithilfe eines Event Grid-Namespaces mit dem Azure-Portal für:
- Erstellen eines Event Grid-Namespace
- Erstellen Sie zwei Clients.
- Erstellen Sie einen Themenbereich.
- Erstellen Sie Herausgeber- und Abonnentenberechtigungsbindungen.
- Testen Sie mithilfe der MQTTX-App, ob Clients Meldungen senden und empfangen können.
Aktivieren der verwalteten Identität für den Namespace
In diesem Abschnitt aktivieren Sie die vom System zugewiesene verwaltete Identität für den Event Grid-Namespace. Erteilen Sie dann der Identität die Berechtigung zum Senden an das zuvor erstellte benutzerdefinierte Event Grid-Thema, damit sie Nachrichten an das benutzerdefinierte Thema weiterleiten kann. Dazu fügen Sie die verwaltete Identität im benutzerdefinierten Thema zur Rolle Event Grid-Datensender hinzu.
Wählen Sie auf der Seite Event Grid-Namespace die Option Identität im linken Navigationsmenü aus.
Navigieren Sie zu dem Event Grid-Thema für ihr benutzerdefiniertes Event Grid-Thema.
Wählen Sie Zugriffssteuerung auf der linken Navigationsleiste aus.
Wählen Sie auf der Seite Zugriffssteuerung Hinzufügen und dann Rollenzuweisung hinzufügen aus.
Wählen Sie auf der Seite Rolle des Assistenten Rollenzuweisung hinzufügen die Rolle Event Grid Data Sender aus und klicken Sie unten auf der Seite auf Weiter.
Wählen Sie auf der Seite Mitglieder des Assistenten Rollenzuweisung hinzufügen Verwaltete Identität aus und wählen Sie dann Mitglieder auswählen.
Führen Sie auf der Seite Verwaltete Identitäten auswählen die folgenden Schritte aus:
Wählen Sie unten auf der Seite Rollenzuweisung hinzufügen die Option Weiter aus.
Wählen Sie auf der Seite Überprüfen + Zuweisen die Einstellungen aus und wählen Sie dann unten auf der Seite Überprüfen + Zuweisen aus.
Konfigurieren des Routings von Meldungen an die Azure-Funktion über ein benutzerdefiniertes Thema
In diesem Schritt konfigurieren Sie das Routing für den Event Grid-Namespace, sodass die empfangenen Meldungen an das von Ihnen erstellte benutzerdefinierte Thema weitergeleitet werden.
Wählen Sie auf der Seite Event Grid-Namespace auf der linken Navigationsleiste Routing aus.
Wählen Sie auf der Seite Routing die Option Routing aktivieren aus.
Wählen Sie für Thementyp Benutzerdefiniertes Thema aus.
Wählen Sie als Thema das benutzerdefinierte Thema aus, das Sie für dieses Tutorial erstellt haben.
Wählen Sie als verwaltete Identität für die Übermittlung Vom System zugewiesenen aus.
Wählen Sie unten auf der Seite Anwenden aus.
Senden von MQTT-Testnachrichten mit MQTTX
Senden Sie MQTT-Testmeldungen an den Namespace, und bestätigen Sie, dass die Funktion sie empfängt.
Folgen Sie den Anweisungen aus dem Artikel Veröffentlichen und abonnieren von Meldungen mithilfe der MQTTX-App, um einige Testmeldungen an den Event Grid-Namespace zu senden.
Der Flow der Ereignisse oder Meldungen ist wie folgt:
MQTTX sendet Meldungen an den Themenbereich des Event Grid-Namespace.
Die Meldungen werden an das von Ihnen konfigurierte benutzerdefinierte Thema weitergeleitet.
Die Meldungen werden an das Ereignisabonnement, also die Azure-Funktion, weitergeleitet.
Verwenden Sie das Protokollierungsfeature, um zu überprüfen, ob die Funktion das Ereignis empfangen hat.
Nächster Schritt
Codebeispiele finden Sie in diesem GitHub-Repository.