Tutorial: Reagieren auf über Azure Event Grid empfangene Azure Service Bus-Ereignisse mit Azure Functions
In diesem Tutorial erfahren Sie, wie Sie mithilfe von Azure Functions und Azure Logic Apps auf Azure Service Bus-Ereignisse reagieren, die über Azure Event Grid empfangen wurden.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines Service Bus-Namespace
- Vorbereiten einer Beispielanwendung zum Senden von Nachrichten.
- Senden von Nachricht an das Service Bus-Thema
- Empfangen von Nachrichten mithilfe von Logik-Apps
- Einrichten einer Testfunktion in Azure
- Verbinden der Funktion und des Namespace per Event Grid
- Empfangen von Nachrichten per Azure Functions
Voraussetzungen
Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
Erstellen eines Service Bus-Namespace
Befolgen Sie die Anleitungen in diesem Tutorial: Schnellstart: Erstellen eines Service Bus-Themas und eines oder mehrerer Abonnements dieses Themas im Azure-Portal, um folgende Aufgaben durchzuführen:
- Erstellen eines Service Bus Premium-Namespace.
- Abrufen der Verbindungszeichenfolge.
- Erstellen eines Service Bus-Themas.
- Erstellen eines Abonnements für das Thema. In diesem Tutorial wird nur ein einzelnes Abonnement benötigt. Die Abonnements S2 und S3 müssen also nicht erstellt werden.
Senden von Nachricht an das Service Bus-Thema
In diesem Schritt wird eine Beispielanwendung verwendet, um Nachrichten an das Service Bus-Thema zu senden, das Sie im vorherigen Schritt erstellt haben.
Klonen Sie das GitHub-Repository „azure-service-bus repository“, oder laden Sie die ZIP-Datei herunter, und extrahieren Sie Dateien daraus.
Navigieren Sie in Visual Studio zum Ordner \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2, und öffnen Sie die Datei SBEventGridIntegration.sln.
Erweitern Sie im Fenster des Projektmappen-Explorers das Projekt MessageSender, und wählen Sie Program.cs aus.
Ersetzen Sie
<SERVICE BUS NAMESPACE - CONNECTION STRING>
durch die Verbindungszeichenfolge für Ihren Service Bus-Namespace und<TOPIC NAME>
durch den Namen des Themas.const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>"; const string TopicName = "<TOPIC NAME>";
Erstellen Sie das Programm, und führen Sie es aus, um fünf Testnachrichten (
const int numberOfMessages = 5;
) an das Service Bus-Thema zu senden.
Zusätzliche Voraussetzungen
Installieren Sie Visual Studio 2022 mit der Workload Azure-Entwicklung. Diese Workload umfasst Azure Function-Tools, die Sie zum Erstellen, Kompilieren und Bereitstellen von Azure Functions-Projekten in Visual Studio benötigen.
Bereitstellen der Funktionen-App
Hinweis
Weitere Informationen zum Erstellen und Bereitstellen einer Azure Functions-App finden Sie unter Entwickeln von Azure Functions mithilfe von Visual Studio.
Öffnen Sie die Datei ReceiveMessagesOnEvent.cs aus dem Projekt FunctionApp1 der Projektmappe SBEventGridIntegration.sln.
Ersetzen Sie
<SERVICE BUS NAMESPACE - CONNECTION STRING>
durch die Verbindungszeichenfolge für Ihren Service Bus-Namespace. Sie sollte mit der Verbindungszeichenfolge identisch sein, die Sie in der Datei Program.cs des ProjektsMessageSender in der gleichen Projektmappe verwendet haben.Klicken Sie mit der rechten Maustaste auf FunctionApp1, und wählen Sie Veröffentlichen aus.
Wählen Sie auf der Seite Veröffentlichen die Option Starten aus. Diese Schritte unterscheiden sich möglicherweise von dem, was bei Ihnen angezeigt wird, aber der Veröffentlichungsprozess sollte ähnlich sein.
Wählen Sie im Veröffentlichungs-Assistenten auf der Seite Ziel die Option Azure als Ziel aus.
Wählen Sie auf der Seite Spezifisches Ziel die Option Azure-Funktions-App (Windows) aus.
Wählen Sie auf der Seite Functions-Instanz die Option Neu erstellen aus.
Führen Sie auf der Seite Funktions-App (Windows) die folgenden Schritte aus:
- Geben Sie einen Namen für die Funktions-App aus.
- Wählen Sie ein Azure-Abonnement aus.
- Wählen Sie eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue Ressourcengruppe. Wählen Sie für dieses Tutorial die Ressourcengruppe aus, die über den Service Bus-Namespace verfügt.
- Wählen Sie einen Plantyp für App Service aus.
- Wählen Sie einen Standort aus. Wählen Sie den gleichen Speicherort wie für den Service Bus-Namespace aus.
- Wählen Sie ein vorhandenes Azure Storage-Konto aus, oder wählen Sie Neu aus, um ein neues Storage-Konto zu erstellen, das von der Functions-App verwendet werden soll.
- Wählen Sie für Application Insights eine vorhandene Application Insights-Instanz aus, um sie mit der Azure-Funktion zu verknüpfen, oder erstellen Sie eine Instanz.
- Wählen Sie Erstellen aus, um die Functions-App zu erstellen.
Wählen Sie auf der Seite Functions-Instanz des Veröffentlichungs-Assistenten die Option Fertig stellen aus.
Wählen Sie auf der Seite Veröffentlichen in Visual Studio Veröffentlichen aus, um die Functions-App in Azure zu veröffentlichen.
Überprüfen Sie im Fenster Ausgabe die Meldungen des Kompilierungs- und Veröffentlichungsvorgangs, und vergewissern Sie sich, dass beide erfolgreich waren.
Wenn die Veröffentlichung einen Authentifizierungsfehler verursacht, stellen Sie sicher, dass die Option Veröffentlichungsanmeldeinformationen für die SCM-Standardauthentifizierung für die Azure Functions-App aktiviert ist.
Wählen Sie nun auf der Seite Veröffentlichen im Abschnitt Hosting die Option ... (Auslassungspunkte) und dann Im Azure-Portal öffnen aus.
Wählen Sie im Azure-Portal auf der Seite Funktions-App in der Liste EventGridTriggerFunction aus. Wir empfehlen die Verwendung des Event Grid-Triggers mit Azure Functions, da seine Verwendung im Vergleich zum HTTP-Trigger einige Vorteile bietet. Weitere Informationen finden Sie unter Azure-Funktion als Ereignishandler für Event Grid-Ereignisse.
Wechseln Sie auf der Seite Funktion für EventGridTriggerFunction zur Registerkarte Aufrufe.
Lassen Sie diese Seite auf einer Registerkarte in Ihrem Webbrowser geöffnet. Sie aktualisieren diese Seite später, um Aufrufe für diese Funktion anzuzeigen.
Verbinden der Funktion und des Service Bus-Namespace über Event Grid
In diesem Abschnitt verknüpfen Sie die Funktion und den Service Bus-Namespace unter Verwendung des Azure-Portals.
Gehen Sie wie folgt vor, um ein Azure Event Grid-Abonnement zu erstellen:
Wechseln Sie im Azure-Portal zu Ihrem Service Bus-Namespace, und wählen Sie im Bereich auf der linken Seite dann Ereignisse aus. Ihr Namespacefenster wird geöffnet, und im rechten Bereich werden zwei Event Grid-Abonnements angezeigt.
Wählen Sie in der Symbolleiste + Ereignisabonnement aus.
Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:
Geben Sie einen Namen für das Abonnement ein.
Geben Sie unter Name einen Namen für das Systemthema ein. Systemthemen werden für Azure-Ressourcen wie Azure Storage-Konten und Azure Service Bus erstellt. Weitere Informationen zu Systemthemen finden Sie unter Systemthemen in Azure Event Grid.
Wählen Sie Azure-Funktion als Endpunkttyp und dann Endpunkt konfigurieren aus.
Wählen Sie auf der Seite Azure-Funktion auswählen das Abonnement, die Ressourcengruppe, die Funktions-App, den Slot und die Funktion aus, und wählen Sie dann Auswahl bestätigen aus.
Wechseln Sie auf der Seite Ereignisabonnement erstellen zur Registerkarte Filter, und führen Sie die folgenden Aufgaben aus:
Wechseln Sie auf der Registerkarte Ereignisabonnements zur Seite Ereignisse, und vergewissern Sie sich, dass das Ereignisabonnement in der Liste angezeigt wird.
Überwachen der Funktions-App
Die Nachrichten, die Sie zuvor an das Service Bus-Thema gesendet haben, werden an das Abonnement (S1) weitergeleitet. Event Grid leitet die Nachrichten an das Abonnement für die Azure-Funktion weiter. In diesem Schritt des Tutorials bestätigen Sie, dass die Funktion aufgerufen wurde, und zeigen die protokollierten Informationsmeldungen an.
Wechseln Sie auf der Seite für Ihre Azure-Funktions-App zur Registerkarte Aufrufe, falls diese nicht bereits aktiv ist. Für jede im Service Bus-Thema gepostete Nachricht sollte ein Eintrag angezeigt werden. Ist dies nicht der Fall, aktualisieren Sie die Seite nach einigen Minuten.
Wählen Sie den Aufruf in der Liste aus, um die Details anzuzeigen.
Sie können die Protokollierungsinformationen auch über die Registerkarte Protokolle anzeigen, während die Nachrichten gesendet werden. Es kann eine Verzögerung auftreten. Daher kann es einige Minuten dauern, bis die protokollierten Nachrichten angezeigt werden.
Problembehandlung
Führen Sie die folgenden Schritte aus, falls keine Funktionsaufrufe angezeigt werden, nachdem Sie etwas abgewartet und eine Aktualisierung durchgeführt haben:
Vergewissern Sie sich, dass die Nachrichten das Service Bus-Thema erreicht haben. Weitere Informationen finden Sie auf der Seite Service Bus-Thema unter dem Zähler Eingehende Nachrichten. In diesem Fall habe ich die Anwendung MessageSender zweimal ausgeführt, sodass zehn Nachrichten angezeigt werden (fünf Nachrichten pro Ausführung).
Vergewissern Sie sich, dass für das Service Bus-Abonnement keine aktiven Nachrichten vorhanden sind. Falls auf dieser Seite keine Ereignisse angezeigt werden, sollten Sie sich vergewissern, dass auf der Seite Service Bus-Abonnement kein Wert für Anzahl aktiver Nachrichten angezeigt wird. Wenn die Anzahl für diesen Zähler größer als 0 ist, werden die Nachrichten des Abonnements aus irgendeinem Grund nicht an die Handlerfunktion (Handler für Ereignisabonnement) weitergeleitet. Vergewissern Sie sich, dass Sie das Ereignisabonnement richtig eingerichtet haben.
Darüber hinaus werden übermittelte Ereignisse auf der Seite Ereignisse des Service Bus-Namespace angezeigt.
Sie können auch auf der Seite Ereignisabonnement verfolgen, dass die Ereignisse übermittelt wurden. Sie können auf diese Seite zugreifen, indem Sie auf der Seite Ereignisse das Ereignisabonnement auswählen.
Zugehöriger Inhalt
- Informieren Sie sich ausführlicher über Azure Event Grid.
- Erfahren Sie mehr über Azure Functions.
- Weitere Informationen zu Azure Service Bus