Freigeben über


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.

  1. Klonen Sie das GitHub-Repository „azure-service-bus repository“, oder laden Sie die ZIP-Datei herunter, und extrahieren Sie Dateien daraus.

  2. Navigieren Sie in Visual Studio zum Ordner \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2, und öffnen Sie die Datei SBEventGridIntegration.sln.

  3. Erweitern Sie im Fenster des Projektmappen-Explorers das Projekt MessageSender, und wählen Sie Program.cs aus.

  4. 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>";
    
  5. 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.

    Ausgabe der Konsolen-App

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.

  1. Öffnen Sie die Datei ReceiveMessagesOnEvent.cs aus dem Projekt FunctionApp1 der Projektmappe SBEventGridIntegration.sln.

  2. 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.

  3. Klicken Sie mit der rechten Maustaste auf FunctionApp1, und wählen Sie Veröffentlichen aus.

  4. 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.

  5. Wählen Sie im Veröffentlichungs-Assistenten auf der Seite Ziel die Option Azure als Ziel aus.

  6. Wählen Sie auf der Seite Spezifisches Ziel die Option Azure-Funktions-App (Windows) aus.

  7. Wählen Sie auf der Seite Functions-Instanz die Option Neu erstellen aus.

    Screenshot der Schaltfläche „Funktion hinzufügen“ im Visual Studio-Dialogfeld „Veröffentlichen“

  8. Führen Sie auf der Seite Funktions-App (Windows) die folgenden Schritte aus:

    1. Geben Sie einen Namen für die Funktions-App aus.
    2. Wählen Sie ein Azure-Abonnement aus.
    3. 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.
    4. Wählen Sie einen Plantyp für App Service aus.
    5. Wählen Sie einen Standort aus. Wählen Sie den gleichen Speicherort wie für den Service Bus-Namespace aus.
    6. 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.
    7. 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.
    8. Wählen Sie Erstellen aus, um die Functions-App zu erstellen.
  9. Wählen Sie auf der Seite Functions-Instanz des Veröffentlichungs-Assistenten die Option Fertig stellen aus.

  10. Wählen Sie auf der Seite Veröffentlichen in Visual Studio Veröffentlichen aus, um die Functions-App in Azure zu veröffentlichen.

  11. Ü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.

    Screenshot der aktivierten Option „Veröffentlichungsanmeldeinformationen für die SCM-Standardauthentifizierung“

  12. Wählen Sie nun auf der Seite Veröffentlichen im Abschnitt Hosting die Option ... (Auslassungspunkte) und dann Im Azure-Portal öffnen aus.

    Screenshot der Seite „Veröffentlichen“ in Visual Studio

  13. 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.

    Screenshot: Seite „Funktionen“ mit der Event Grid-Triggerfunktion

  14. Wechseln Sie auf der Seite Funktion für EventGridTriggerFunction zur Registerkarte Aufrufe.

    Screenshot der Seite „Aufrufe“ einer Event Grid-Triggerfunktion

    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:

  1. 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.

    Screenshot der Seite „Ereignisse“ für einen Service Bus-Namespace

  2. Wählen Sie in der Symbolleiste + Ereignisabonnement aus.

  3. Führen Sie auf der Seite Ereignisabonnement erstellen die folgenden Schritte aus:

    1. Geben Sie einen Namen für das Abonnement ein.

    2. 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.

    3. Wählen Sie Azure-Funktion als Endpunkttyp und dann Endpunkt konfigurieren aus.

      Screenshot der Seite „Ereignisabonnement erstellen“ für einen Service Bus-Namespace

    4. 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.

      Screenshot der Auswahl eines Azure-Funktionsendpunkts

    5. Wechseln Sie auf der Seite Ereignisabonnement erstellen zur Registerkarte Filter, und führen Sie die folgenden Aufgaben aus:

      1. Wählen Sie Betrefffilter aktivieren aus.

      2. Geben Sie den Namen des Abonnements für das zuvor erstellte Service Bus-Thema ein. Im folgenden Screenshot lautet der Name des Abonnements mysub.

      3. Wählen Sie die Schaltfläche Erstellen.

        Screenshot der Seite „Filter“ im Ereignisabonnement

  4. Wechseln Sie auf der Registerkarte Ereignisabonnements zur Seite Ereignisse, und vergewissern Sie sich, dass das Ereignisabonnement in der Liste angezeigt wird.

    Screenshot der Ereignisabonnements für den Service Bus-Namespace

Ü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.

  1. 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.

    Screenshot der Seite „Aufrufe“ für die Funktion nach einigen Aufrufen

  2. Wählen Sie den Aufruf in der Liste aus, um die Details anzuzeigen.

    Screenshot mit Details eines Funktionsaufrufs

    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.

    Screenshot der Registerkarte „Protokolle“ für eine Azure-Funktion.

Problembehandlung

Führen Sie die folgenden Schritte aus, falls keine Funktionsaufrufe angezeigt werden, nachdem Sie etwas abgewartet und eine Aktualisierung durchgeführt haben:

  1. 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).

    Screenshot der Seite „Service Bus-Thema“ mit eingehenden Nachrichten

  2. 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.

    Screenshot der Anzahl der aktiven Nachrichten im Service Bus-Abonnement

  3. Darüber hinaus werden übermittelte Ereignisse auf der Seite Ereignisse des Service Bus-Namespace angezeigt.

    Screenshot der Anzahl der übermittelten Ereignisse

  4. 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.

    Screenshot der Seite „Ereignisabonnement“ mit übermittelten Ereignissen