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 Neue Azure-Funktion erstellen aus.

    Abbildung: Schaltfläche „Funktion hinzufügen“ des Visual Studio-Dialogfelds „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 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.

    Veröffentlichen einer Functions-App

  11. Überprüfen Sie im Fenster Ausgabe die Meldungen des Kompilierungs- und Veröffentlichungsvorgangs, und vergewissern Sie sich, dass beide erfolgreich waren.

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

  13. Wählen Sie im Azure-Portal auf der Seite Funktions-App im linken Menü Funktionen aus, und vergewissern Sie sich, dass zwei Funktionen angezeigt werden:

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

  14. Wählen Sie EventGridTriggerFunction aus der Liste 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.

  15. Wählen Sie auf der Seite Funktion für die EventGridTriggerFunction im linken Menü Überwachen aus.

  16. Wählen Sie Konfigurieren zum Konfigurieren von Application Insights zum Erfassen des Aufrufprotokolls aus. Sie verwenden diese Seite, um die Funktionsausführungen beim Empfang von Service-Bus-Ereignissen von Event Grid zu überwachen.

  17. Geben Sie auf der Seite Application Insights einen Namen für die Ressource ein, wählen Sie einen Speicherort für die Ressource aus, und wählen Sie dann OK aus.

  18. Wählen Sie im oberen Bereich (Breadcrumb-Menü) die Funktion EventGridTriggerFunction aus, um zurück zur Seite Funktion zu navigieren.

  19. Vergewissern Sie sich, dass Sie sich auf der Seite Überwachen befinden.

    Seite „Überwachen“ für die Funktion vor Funktionsaufrufen

    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.

    Service Bus: Seite „Ereignisse“

  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 auswählen aus.

      Service Bus: Event Grid-Abonnement

    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.

      Funktion: Endpunkt auswählen

    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 (S1) ein.

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

        Ereignisabonnementfilter

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

    Ereignisabonnement in der Liste

Ü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 Überwachen, wenn 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.

    Seite „Überwachen“ für die Funktion nach Aufrufen

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

    Details des Funktionsaufrufs

    Sie können die Protokollierungsinformationen auch über die Registerkarte Protokolle auf der Seite Monitor anzeigen, wenn die Nachrichten gesendet werden. Es kann eine Verzögerung auftreten. Daher kann es einige Minuten dauern, bis die protokollierten Nachrichten angezeigt werden.

    Funktionsprotokolle

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

    Seite „Service Bus-Thema“: Eingehende 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.

    Anzahl aktiver Nachrichten für Service Bus-Abonnement

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

    Seite „Ereignisse“: Übermittelte 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.

    Seite „Ereignisabonnement“: Übermittelte Ereignisse

Nächste Schritte