Senden oder Empfangen von Ereignissen an und von Azure Event Hubs: .NET (Azure.Messaging.EventHubs)Send events to and receive events from Azure Event Hubs - .NET (Azure.Messaging.EventHubs)

In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe der .NET-Bibliothek Azure.Messaging.EventHubs Ereignisse an einen Event Hub senden bzw. von dort empfangen.This quickstart shows how to send events to and receive events from an event hub using the Azure.Messaging.EventHubs .NET library.

Wichtig

In dieser Schnellstartanleitung wird die neue Bibliothek Azure.Messaging.EventHubs verwendet.This quickstart uses the new Azure.Messaging.EventHubs library. Eine Schnellstartanleitung, in der die alte Microsoft.Azure.EventHubs-Bibliothek verwendet wird, finden Sie unter Senden und Empfangen von Ereignissen mithilfe der Bibliothek „Microsoft.Azure.EventHubs“.For a quickstart that uses the old Microsoft.Azure.EventHubs library, see Send and receive events using Microsoft.Azure.EventHubs library.

VoraussetzungenPrerequisites

Wenn Sie mit Azure Event Hubs noch nicht vertraut sind, lesen Sie vor dem Durcharbeiten dieser Schnellstartanleitung die Informationen unter Übersicht über Event Hubs.If you're new to Azure Event Hubs, see Event Hubs overview before you do this quickstart.

Zum Durchführen dieser Schnellstartanleitung benötigen Sie Folgendes:To complete this quickstart, you need the following prerequisites:

  • Microsoft Azure-Abonnement.Microsoft Azure subscription. Für die Verwendung von Azure-Diensten benötigen Sie ein Abonnement. Das gilt auch für Azure Event Hubs.To use Azure services, including Azure Event Hubs, you need a subscription. Falls Sie noch nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversion registrieren oder beim Erstellen eines Kontos Ihre MSDN-Abonnentenvorteile nutzen.If you don't have an existing Azure account, you can sign up for a free trial or use your MSDN subscriber benefits when you create an account.
  • Microsoft Visual Studio 2019.Microsoft Visual Studio 2019. Die Azure Event Hubs-Clientbibliothek nutzt neue Features, die in C# 8.0 eingeführt wurden.The Azure Event Hubs client library makes use of new features that were introduced in C# 8.0. Die Bibliothek kann zwar auch weiterhin mit älteren Versionen von C# verwendet werden, doch die neue Syntax steht dann nicht zur Verfügung.You can still use the library with previous C# language versions, but the new syntax won't be available. Um die vollständige Syntax nutzen zu können, wird empfohlen, dass Sie mit dem .NET Core SDK 3.0 oder höher kompilieren, wobei die Sprachversion auf latest festgelegt ist.To make use of the full syntax, it is recommended that you compile with the .NET Core SDK 3.0 or higher and language version set to latest. Bei Verwendung von Visual Studio sind Versionen vor Visual Studio 2019 nicht mit den Tools kompatibel, die zum Erstellen von C# 8.0-Projekten erforderlich sind.If you're using Visual Studio, versions before Visual Studio 2019 aren't compatible with the tools needed to build C# 8.0 projects. Visual Studio 2019 (einschließlich der kostenlosen Community-Edition) kann hier heruntergeladen werden.Visual Studio 2019, including the free Community edition, can be downloaded here.
  • Erstellen Sie einen Event Hubs-Namespace und einen Event Hub.Create an Event Hubs namespace and an event hub. Verwenden Sie zunächst das Azure-Portal, um einen Namespace vom Typ „Event Hubs“ zu erstellen, und beschaffen Sie die Verwaltungsanmeldeinformationen, die Ihre Anwendung für die Kommunikation mit dem Event Hub benötigt.The first step is to use the Azure portal to create a namespace of type Event Hubs, and obtain the management credentials your application needs to communicate with the event hub. Erstellen Sie anhand der Anleitung in diesem Artikel einen Namespace und einen Event Hub.To create a namespace and an event hub, follow the procedure in this article. Gehen Sie dann wie im folgenden Artikel beschrieben vor, um die Verbindungszeichenfolge für den Event Hubs-Namespace abzurufen: Abrufen der Verbindungszeichenfolge.Then, get the connection string for the Event Hubs namespace by following instructions from the article: Get connection string. Sie verwenden die Verbindungszeichenfolge im weiteren Verlauf dieser Schnellstartanleitung.You use the connection string later in this quickstart.

Senden von EreignisseSend events

In diesem Abschnitt erfahren Sie, wie Sie eine .NET Core-Anwendung zum Senden von Ereignissen an einen Event Hub erstellen.This section shows you how to create a .NET Core console application to send events to an event hub.

Erstellen einer KonsolenanwendungCreate a console application

  1. Starten Sie Visual Studio 2019.Start Visual Studio 2019.

  2. Wählen Sie Neues Projekt erstellen aus.Select Create a new project.

  3. Führen Sie im Dialogfeld Neues Projekt erstellen die folgenden Schritte aus: Sollte dieses Dialogfeld nicht angezeigt werden, wählen Sie im Menü die Option Datei und anschließend Neu > Projekt aus.On the Create a new project dialog box, do the following steps: If you don't see this dialog box, select File on the menu, select New, and then select Project.

    1. Wählen Sie die Programmiersprache C# aus.Select C# for the programming language.

    2. Wählen Sie den Anwendungstyp Konsole aus.Select Console for the type of the application.

    3. Wählen Sie in der Ergebnisliste die Option Konsolen-App (.NET Core) aus.Select Console App (.NET Core) from the results list.

    4. Klicken Sie anschließend auf Weiter.Then, select Next.

      Dialogfeld "Neues Projekt"

  4. Geben Sie EventHubsSender als Projektname und EventHubsQuickStart als Projektmappenname ein, und wählen Sie anschließend OK aus, um das Projekt zu erstellen.Enter EventHubsSender for the project name, EventHubsQuickStart for the solution name, and then select OK to create the project.

    C# > Konsolen-App

Hinzufügen des Event Hubs-NuGet-PaketsAdd the Event Hubs NuGet package

  1. Wählen Sie im Menü Extras > NuGet-Paket-Manager > Paket-Manager-Konsole aus.Select Tools > NuGet Package Manager > Package Manager Console from the menu.

  2. Führen Sie den folgenden Befehl aus, um das NuGet-Paket Azure.Messaging.EventHubs zu installieren:Run the following command to install the Azure.Messaging.EventHubs NuGet package:

    Install-Package Azure.Messaging.EventHubs
    

Schreiben von Code zum Senden von Nachrichten an den Event HubWrite code to send messages to the event hub

  1. Fügen Sie am Anfang der Datei Program.cs die folgenden using-Anweisungen hinzu:Add the following using statements to the top of the Program.cs file:

    using System;
    using System.Text;
    using System.Threading.Tasks;
    using Azure.Messaging.EventHubs;
    using Azure.Messaging.EventHubs.Producer;
    
  2. Fügen Sie der Klasse Program Konstanten für die Event Hubs-Verbindungszeichenfolge und den Namen des Event Hubs hinzu.Add constants to the Program class for the Event Hubs connection string and the event hub name. Ersetzen Sie die in Klammern gesetzten Platzhalter durch die entsprechenden Werte, die Sie beim Erstellen des Event Hubs erhalten haben.Replace placeholders in brackets with the proper values that you got when creating the event hub. Stellen Sie sicher, dass es sich bei {Event Hubs namespace connection string} um die Verbindungszeichenfolge auf Namespaceebene und nicht um die Event Hub-Zeichenfolge handelt.Make sure that the {Event Hubs namespace connection string} is the namespace-level connection string, and not the event hub string.

    private const string connectionString = "<EVENT HUBS NAMESPACE - CONNECTION STRING>";
    private const string eventHubName = "<EVENT HUB NAME>";
    
  3. Ersetzen Sie die Methode Main durch die folgende Methode vom Typ async Main.Replace the Main method with the following async Main method. Weitere Einzelheiten finden Sie in den Codekommentaren.See the code comments for details.

        static async Task Main()
        {
            // Create a producer client that you can use to send events to an event hub
            await using (var producerClient = new EventHubProducerClient(connectionString, eventHubName))
            {
                // Create a batch of events 
                using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
    
                // Add events to the batch. An event is a represented by a collection of bytes and metadata. 
                eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes("First event")));
                eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes("Second event")));
                eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes("Third event")));
    
                // Use the producer client to send the batch of events to the event hub
                await producerClient.SendAsync(eventBatch);
                Console.WriteLine("A batch of 3 events has been published.");
            }
        }
    
  4. Erstellen Sie das Projekt, und vergewissern Sie sich, dass keine Fehler vorhanden sind.Build the project, and ensure that there are no errors.

  5. Führen Sie das Programm aus, und warten Sie auf die Bestätigungsmeldung.Run the program and wait for the confirmation message.

  6. Im Azure-Portal können Sie überprüfen, ob der Event Hub die Nachrichten empfangen hat.In the Azure portal, you can verify that the event hub has received the messages. Wechseln Sie im Abschnitt Metriken zur Ansicht Nachrichten.Switch to Messages view in the Metrics section. Aktualisieren Sie die Seite, um das Diagramm zu aktualisieren.Refresh the page to update the chart. Es kann einige Sekunden dauern, bis angezeigt wird, dass die Nachrichten empfangen wurden.It may take a few seconds for it to show that the messages have been received.

    Überprüfen, ob der Event Hub die Nachrichten empfangen hatVerify that the event hub received the messages

    Hinweis

    Den gesamten Quellcode mit weiteren informativen Kommentaren finden Sie auf GitHub in dieser Datei.For the complete source code with more informational comments, see this file on the GitHub

Empfangen von EreignissenReceive events

In diesem Abschnitt erfahren Sie, wie Sie eine .NET Core-Konsolenanwendung schreiben, die unter Verwendung eines Ereignisprozessors Nachrichten von einem Event Hub empfängt.This section shows how to write a .NET Core console application that receives messages from an event hub using an event processor. Der Ereignisprozessor vereinfacht das Empfangen von Ereignissen von Event Hubs durch die Verwaltung permanenter Prüfpunkte und paralleler Empfangsvorgänge von diesen Event Hubs.The event processor simplifies receiving events from event hubs by managing persistent checkpoints and parallel receptions from those event hubs. Ein Ereignisprozessor wird einem bestimmten Event Hub und einer bestimmten Consumergruppe zugeordnet.An event processor is associated with a specific event Hub and a consumer group. Er empfängt Ereignisse von mehreren Partitionen im Event Hub und übergibt sie zur Verarbeitung an einen Handlerdelegaten, der dafür von Ihnen bereitgestellten Code verwendet.It receives events from multiple partitions in the event hub, passing them to a handler delegate for processing using code that you provide.

Warnung

Wenn Sie diesen Code in Azure Stack Hub ausführen, treten Laufzeitfehler auf, es sei denn, Sie verwenden eine bestimmte Storage-API-Version als Ziel.If you run this code on Azure Stack Hub, you will experience runtime errors unless you target a specific Storage API version. Dies liegt daran, dass das Event Hubs SDK die neueste verfügbare Azure Storage API verwendet, die in Azure verfügbar ist und auf Ihrer Azure Stack Hub-Plattform möglicherweise nicht verfügbar ist.That's because the Event Hubs SDK uses the latest available Azure Storage API available in Azure that may not be available on your Azure Stack Hub platform. Azure Stack Hub unterstützt möglicherweise eine andere Storage Blob SDK-Version als die üblicherweise in Azure verfügbaren SDKs.Azure Stack Hub may support a different version of Storage Blob SDK than those typically available on Azure. Wenn Sie Azure Blob Storage als Prüfpunktspeicher verwenden, überprüfen Sie die unterstützte Azure Storage-API-Version für Ihren Azure Stack Hub-Build, und verwenden Sie diese Version im Code als Ziel.If you are using Azure Blog Storage as a checkpoint store, check the supported Azure Storage API version for your Azure Stack Hub build and target that version in your code.

Wenn Sie z. B. die Azure Stack Hub-Version 2005 verwenden, ist die Version 2019-02-02 die höchste verfügbare Version für den Storage-Dienst.For example, If you are running on Azure Stack Hub version 2005, the highest available version for the Storage service is version 2019-02-02. Standardmäßig verwendet die Clientbibliothek des Event Hubs SDK die höchste verfügbare Version in Azure (2019-07-07 zum Zeitpunkt der Veröffentlichung des SDK).By default, the Event Hubs SDK client library uses the highest available version on Azure (2019-07-07 at the time of the release of the SDK). In diesem Fall müssen Sie neben den folgenden Schritten in diesem Abschnitt auch Code für die API-Version 2019-02-02 des Storage-Diensts hinzufügen.In this case, besides following steps in this section, you will also need to add code to target the Storage service API version 2019-02-02. Ein Beispiel für die Verwendung einer bestimmten Storage-API-Version als Ziel finden Sie in diesem Beispiel auf GitHub.For an example on how to target a specific Storage API version, see this sample on GitHub.

Erstellen eines Azure Storage-Kontos und eines BlobcontainersCreate an Azure Storage and a blob container

In dieser Schnellstartanleitung wird Azure Storage als Prüfpunktspeicher verwendet.In this quickstart, you use Azure Storage as the checkpoint store. Führen Sie die folgenden Schritte aus, um ein Azure Storage-Konto zu erstellen:Follow these steps to create an Azure Storage account.

  1. Erstellen Sie ein Azure Storage-Konto.Create an Azure Storage account

  2. Erstellen eines BlobcontainersCreate a blob container

  3. Abrufen der Verbindungszeichenfolge für das SpeicherkontoGet the connection string to the storage account

    Notieren Sie sich die Verbindungszeichenfolge und den Containernamen.Note down the connection string and the container name. Diese Angaben werden im Empfangscode verwendet.You'll use them in the receive code.

Erstellen eines Projekts für den EmpfängerCreate a project for the receiver

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe EventHubQuickStart, zeigen Sie auf Hinzufügen, und wählen Sie anschließend Neues Projekt aus.In the Solution Explorer window, right-click the EventHubQuickStart solution, point to Add, and select New Project.
  2. Wählen Sie Konsolen-App (.NET Core) und anschließend Weiter aus.Select Console App (.NET Core), and select Next.
  3. Geben Sie unter Projektname den Namen EventHubsReceiver ein, and wählen Sie Erstellen aus.Enter EventHubsReceiver for the Project name, and select Create.

Hinzufügen des Event Hubs-NuGet-PaketsAdd the Event Hubs NuGet package

  1. Wählen Sie im Menü Extras > NuGet-Paket-Manager > Paket-Manager-Konsole aus.Select Tools > NuGet Package Manager > Package Manager Console from the menu.

  2. Führen Sie den folgenden Befehl aus, um das NuGet-Paket Azure.Messaging.EventHubs zu installieren:Run the following command to install the Azure.Messaging.EventHubs NuGet package:

    Install-Package Azure.Messaging.EventHubs
    
  3. Führen Sie den folgenden Befehl aus, um das NuGet-Paket Azure.Messaging.EventHubs.Processor zu installieren:Run the following command to install the Azure.Messaging.EventHubs.Processor NuGet package:

    Install-Package Azure.Messaging.EventHubs.Processor
    

Aktualisieren der Methode „Main“Update the Main method

  1. Fügen Sie am Anfang der Datei Program.cs die folgenden using-Anweisungen hinzu.Add the following using statements at the top of the Program.cs file.

    using System;
    using System.Text;
    using System.Threading.Tasks;
    using Azure.Storage.Blobs;
    using Azure.Messaging.EventHubs;
    using Azure.Messaging.EventHubs.Consumer;
    using Azure.Messaging.EventHubs.Processor;
    
  2. Fügen Sie der Klasse Program Konstanten für die Event Hubs-Verbindungszeichenfolge und den Namen des Event Hubs hinzu.Add constants to the Program class for the Event Hubs connection string and the event hub name. Ersetzen Sie die in Klammern gesetzten Platzhalter durch die entsprechenden Werte, die Sie beim Erstellen des Event Hubs erhalten haben.Replace placeholders in brackets with the proper values that you got when creating the event hub. Ersetzen Sie die in Klammern gesetzten Platzhalter durch die entsprechenden Werte, die Sie beim Erstellen des Event Hubs und des Speicherkontos erhalten haben (Zugriffsschlüssel, primäre Verbindungszeichenfolge).Replace placeholders in brackets with the proper values that you got when creating the event hub and the storage account (access keys - primary connection string). Stellen Sie sicher, dass es sich bei {Event Hubs namespace connection string} um die Verbindungszeichenfolge auf Namespaceebene und nicht um die Event Hub-Zeichenfolge handelt.Make sure that the {Event Hubs namespace connection string} is the namespace-level connection string, and not the event hub string.

        private const string ehubNamespaceConnectionString = "<EVENT HUBS NAMESPACE - CONNECTION STRING>";
        private const string eventHubName = "<EVENT HUB NAME>";
        private const string blobStorageConnectionString = "<AZURE STORAGE CONNECTION STRING>";
        private const string blobContainerName = "<BLOB CONTAINER NAME>";
    
  3. Ersetzen Sie die Methode Main durch die folgende Methode vom Typ async Main.Replace the Main method with the following async Main method. Weitere Einzelheiten finden Sie in den Codekommentaren.See the code comments for details.

        static async Task Main()
        {
            // Read from the default consumer group: $Default
            string consumerGroup = EventHubConsumerClient.DefaultConsumerGroupName;
    
            // Create a blob container client that the event processor will use 
            BlobContainerClient storageClient = new BlobContainerClient(blobStorageConnectionString, blobContainerName);
    
            // Create an event processor client to process events in the event hub
            EventProcessorClient processor = new EventProcessorClient(storageClient, consumerGroup, ehubNamespaceConnectionString, eventHubName);
    
            // Register handlers for processing events and handling errors
            processor.ProcessEventAsync += ProcessEventHandler;
            processor.ProcessErrorAsync += ProcessErrorHandler;
    
            // Start the processing
            await processor.StartProcessingAsync();
    
            // Wait for 10 seconds for the events to be processed
            await Task.Delay(TimeSpan.FromSeconds(10));
    
            // Stop the processing
            await processor.StopProcessingAsync();
        }    
    
  4. Fügen Sie der Klasse nun die folgenden Ereignis- und Fehlerhandlermethoden hinzu.Now, add the following event and error handler methods to the class.

        static async Task ProcessEventHandler(ProcessEventArgs eventArgs)
        {
            // Write the body of the event to the console window
            Console.WriteLine("\tRecevied event: {0}", Encoding.UTF8.GetString(eventArgs.Data.Body.ToArray()));
    
            // Update checkpoint in the blob storage so that the app receives only new events the next time it's run
            await eventArgs.UpdateCheckpointAsync(eventArgs.CancellationToken);
        }
    
        static Task ProcessErrorHandler(ProcessErrorEventArgs eventArgs)
        {
            // Write details about the error to the console window
            Console.WriteLine($"\tPartition '{ eventArgs.PartitionId}': an unhandled exception was encountered. This was not expected to happen.");
            Console.WriteLine(eventArgs.Exception.Message);
            return Task.CompletedTask;
        }    
    
  5. Erstellen Sie das Projekt, und vergewissern Sie sich, dass keine Fehler vorhanden sind.Build the project, and ensure that there are no errors.

    Hinweis

    Den gesamten Quellcode mit weiteren informativen Kommentaren finden Sie auf GitHub in dieser Datei.For the complete source code with more informational comments, see this file on the GitHub.

  6. Führen Sie die Empfängeranwendung aus.Run the receiver application.

  7. Daraufhin sollte eine Nachricht mit dem Hinweis angezeigt werden, dass das Ereignis empfangen wurde.You should see a message that the event has been received.

    Ereignis empfangen

    Bei diesen Ereignissen handelt es sich um die drei Ereignisse, die Sie zuvor durch Ausführen des Sendeprogramms an den Event Hub gesendet haben.These events are the three events you sent to the event hub earlier by running the sender program.

Nächste SchritteNext steps

Sehen Sie sich die Beispiele auf GitHub an:Check out the samples on GitHub.