Gebeurtenissen verzenden naar en ontvangen van Azure Event Hubs - .NET (Azure.Messaging.EventHubs)Send events to and receive events from Azure Event Hubs - .NET (Azure.Messaging.EventHubs)

In deze quickstart ziet u hoe u gebeurtenissen kunt verzenden naar en ontvangen van een Event Hub met behulp van de .NET-bibliotheek Azure.Messaging.EventHubs.This quickstart shows how to send events to and receive events from an event hub using the Azure.Messaging.EventHubs .NET library.

Belangrijk

In deze snelstartgids wordt gebruik gemaakt van de nieuwe Azure.Messaging.EventHubs-bibliotheek.This quickstart uses the new Azure.Messaging.EventHubs library. Zie Event Hubs verzenden en ontvangen met de Microsoft.Azure.EventHubs-bibliotheek voor een quickstart die gebruikmaakt van de oude Microsoft.Azure.EventHubs-bibliotheek.For a quickstart that uses the old Microsoft.Azure.EventHubs library, see Send and receive events using Microsoft.Azure.EventHubs library.

VereistenPrerequisites

Als u nog geen ervaring hebt met Azure Event Hubs, raadpleegt u het Event Hubs-overzicht voordat u deze quickstart uitvoert.If you're new to Azure Event Hubs, see Event Hubs overview before you do this quickstart.

Voor het voltooien van deze snelstart moet aan de volgende vereisten worden voldaan:To complete this quickstart, you need the following prerequisites:

  • Microsoft Azure-abonnement.Microsoft Azure subscription. Als u Azure-services wilt gebruiken, met inbegrip van Azure Event Hubs, hebt u een abonnement nodig.To use Azure services, including Azure Event Hubs, you need a subscription. Als u nog geen Azure-account hebt, kunt u zich aanmelden voor een gratis proefversie of uw voordelen als MSDN-abonnee gebruiken wanneer u een account maakt.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. De Azure Event Hubs-clientbibliotheek maakt gebruik van nieuwe functies die in C# 8.0 zijn geïntroduceerd.The Azure Event Hubs client library makes use of new features that were introduced in C# 8.0. U kunt de bibliotheek nog steeds gebruiken met eerdere versies van C#, maar de nieuwe syntaxis is dan niet beschikbaar.You can still use the library with previous C# language versions, but the new syntax won't be available. Als u gebruik wilt maken van de volledige syntaxis, is het raadzaam om te compileren met .NET Core SDK 3.0 of hoger en de taalversie ingesteld op latest.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. Als u Visual Studio gebruikt, weet dan dat de versies vóór Visual Studio 2019 niet compatibel met de hulpprogramma's die nodig zijn om C# 8.0 projecten te bouwen.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, met inbegrip van de gratis Community-editie, hier worden gedownload.Visual Studio 2019, including the free Community edition, can be downloaded here.
  • Een Event Hubs-naamruimte en een Event Hub maken.Create an Event Hubs namespace and an event hub. In de eerste stap gebruikt u Azure Portal om een naamruimte van het type Event Hubs te maken en de beheerreferenties te verkrijgen die de toepassing nodig heeft om met de Event Hub te communiceren.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. Volg de procedure in dit artikel om een naamruimte en een Event Hub te maken.To create a namespace and an event hub, follow the procedure in this article. Haal vervolgens de verbindingsreeks voor de Event Hubs-naamruimte op door de instructies in het artikel te volgen: Verbindingstekenreeks ophalen.Then, get the connection string for the Event Hubs namespace by following instructions from the article: Get connection string. U gebruikt de verbindingsreeks later in deze quickstart.You use the connection string later in this quickstart.

Gebeurtenissen verzendenSend events

In deze sectie wordt beschreven hoe u een .NET Core-consoletoepassing maakt voor het verzenden van gebeurtenissen naar een Event Hub.This section shows you how to create a .NET Core console application to send events to an event hub.

Een consoletoepassing makenCreate a console application

  1. Start Visual Studio 2019.Start Visual Studio 2019.

  2. Selecteer Een nieuw project maken.Select Create a new project.

  3. Voer in het dialoogvenster Een nieuw project maken de volgende stappen uit: Als dit dialoogvenster niet wordt weergegeven, selecteert u in het menu Bestand, Nieuw en vervolgens Project.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. Selecteer de programmeertaal C# .Select C# for the programming language.

    2. Selecteer Console als het type toepassing.Select Console for the type of the application.

    3. Selecteer Console-app (.NET Core) in de lijst met resultaten.Select Console App (.NET Core) from the results list.

    4. Selecteer vervolgens Volgende.Then, select Next.

      Het dialoogvenster New Project

  4. Voer EventHubsSender in als projectnaam, EventHubsQuickStart als naam van de oplossing en selecteer OK om het project te maken.Enter EventHubsSender for the project name, EventHubsQuickStart for the solution name, and then select OK to create the project.

    C# > Console-app

Het Event Hubs NuGet-pakket toevoegenAdd the Event Hubs NuGet package

  1. Selecteer Tools > NuGet-pakketbeheer > Package Manager Console in het menu.Select Tools > NuGet Package Manager > Package Manager Console from the menu.

  2. Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.EventHubs te installeren:Run the following command to install the Azure.Messaging.EventHubs NuGet package:

    Install-Package Azure.Messaging.EventHubs
    

Code schrijven om berichten te verzenden naar de event hubWrite code to send messages to the event hub

  1. Voeg aan het begin van het bestand usingProgram.cs de volgende-instructies toe: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. Voeg aan de Program-klasse constanten toe voor de Event Hubs-verbindingsreeks en de naam van de Event Hub.Add constants to the Program class for the Event Hubs connection string and the event hub name. Vervang de tijdelijke aanduidingen tussen de haakjes door de juiste waarden die zijn verkregen bij het maken van de Event Hub.Replace placeholders in brackets with the proper values that you got when creating the event hub. Zorg ervoor dat {Event Hubs namespace connection string} de verbindingsreeks op naamruimteniveau is en niet de event hub-tekenreeks.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. Vervang de Main-methode door de volgende async Main-methode.Replace the Main method with the following async Main method. Zie de opmerkingen bij de code voor meer informatie.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. Bouw het project en controleer of er geen fouten zijn.Build the project, and ensure that there are no errors.

  5. Voer het programma uit en wacht op het bevestigingsbericht.Run the program and wait for the confirmation message.

  6. In de Azure-portal kunt u controleren of de Event Hub de berichten heeft ontvangen.In the Azure portal, you can verify that the event hub has received the messages. Schakel over naar de weergave Berichten in de sectie Metrische gegevens.Switch to Messages view in the Metrics section. U moet de pagina vernieuwen om de grafiek bij te werken.Refresh the page to update the chart. Het kan een paar seconden duren voordat wordt weergegeven dat de berichten zijn ontvangen.It may take a few seconds for it to show that the messages have been received.

    Controleren of de Event Hub de berichten heeft ontvangenVerify that the event hub received the messages

    Notitie

    Zie dit bestand op de GitHub voor de volledige broncode met meer informatieve opmerkingenFor the complete source code with more informational comments, see this file on the GitHub

Gebeurtenissen ontvangenReceive events

In deze sectie ziet u hoe u een .NET Core-consoletoepassing schrijft die met gebeurtenisprocessor berichten ontvangt van een Event Hub.This section shows how to write a .NET Core console application that receives messages from an event hub using an event processor. De gebeurtenisprocessor vereenvoudigt het ontvangen van gebeurtenissen van Event Hubs door permanente controlepunten en parallelle ontvangst van deze Event Hubs te beheren.The event processor simplifies receiving events from event hubs by managing persistent checkpoints and parallel receptions from those event hubs. Een gebeurtenisprocessor is gekoppeld aan een specifieke Event hub en een consumentengroep.An event processor is associated with a specific event Hub and a consumer group. Er worden gebeurtenissen van meerdere partities in de Event Hub ontvangen en de worden aan een handler-gemachtigde doorgegeven voor verwerking met code die u opgeeft.It receives events from multiple partitions in the event hub, passing them to a handler delegate for processing using code that you provide.

Waarschuwing

Als u deze code op Azure Stack Hub uitvoert, treden er runtimefouten op tenzij u zich richt op een specifieke versie van de Storage-API.If you run this code on Azure Stack Hub, you will experience runtime errors unless you target a specific Storage API version. Dat komt doordat de Event Hubs-SDK de meest recente Azure Storage-API gebruikt die beschikbaar is in Azure maar die niet beschikbaar is op uw Azure Stack Hub-platform.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 biedt mogelijk ondersteuning voor een andere versie van de Storage Blob-SDK dan de versies die doorgaans in Azure beschikbaar zijn.Azure Stack Hub may support a different version of Storage Blob SDK than those typically available on Azure. Als u Azure Blob-opslag gebruikt als controlepuntopslag, controleert u de ondersteunde versie van de Azure Storage-API voor uw build van Azure Stack Hub en stelt u die versie in uw code als doel in.If you are using Azure Blob 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.

Als u bijvoorbeeld op Azure Stack Hub versie 2005 uitvoert, is de hoogste beschikbare versie van de Storage-service versie 2019-02-02.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. De Event Hubs-SDK-clientbibliotheek maakt standaard gebruik van de hoogste beschikbare versie op Azure (2019-07-07 op het moment van de release van de 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 dit geval moet u naast de volgende stappen in deze sectie ook code toevoegen om de API-versie van de Storage-service te richten op 2019-02-02.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. Zie dit voorbeeld op GitHub voor een voorbeeld van hoe u een specifieke versie van Storage-API instelt.For an example on how to target a specific Storage API version, see this sample on GitHub.

Een Azure Storage en een blobcontainer makenCreate an Azure Storage and a blob container

In deze quickstart gebruikt u Azure Storage als controlepuntopslag.In this quickstart, you use Azure Storage as the checkpoint store. Volg deze stappen om een Azure Storage-account te maken.Follow these steps to create an Azure Storage account.

  1. Een Azure Storage-account makenCreate an Azure Storage account

  2. Een blobcontainer makenCreate a blob container

  3. De verbindingsreeks voor het opslagaccount ophalenGet the connection string to the storage account

    Noteer de verbindingsreeks en de naam van de container.Note down the connection string and the container name. U gebruikt deze in de receive-code.You'll use them in the receive code.

Een project maken voor de ontvangerCreate a project for the receiver

  1. Klik in het Solution Explorer-venster met de rechtermuisknop op de oplossing EventHubQuickStart, wijs naar Toevoegen en selecteer Nieuw project.In the Solution Explorer window, right-click the EventHubQuickStart solution, point to Add, and select New Project.
  2. Selecteer Consoletoepassing (.NET Core) en selecteer Volgende.Select Console App (.NET Core), and select Next.
  3. Voer EventHubsReceiver in als Projectnaam en selecteer Maken.Enter EventHubsReceiver for the Project name, and select Create.

Het Event Hubs NuGet-pakket toevoegenAdd the Event Hubs NuGet package

  1. Selecteer Tools > NuGet-pakketbeheer > Package Manager Console in het menu.Select Tools > NuGet Package Manager > Package Manager Console from the menu.

  2. Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.EventHubs te installeren:Run the following command to install the Azure.Messaging.EventHubs NuGet package:

    Install-Package Azure.Messaging.EventHubs
    
  3. Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.EventHubs.Processor te installeren:Run the following command to install the Azure.Messaging.EventHubs.Processor NuGet package:

    Install-Package Azure.Messaging.EventHubs.Processor
    

De main-methode bijwerkenUpdate the Main method

  1. Voeg aan het begin van het bestand usingProgram.cs de volgende-instructies toe.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. Voeg aan de Program-klasse constanten toe voor de Event Hubs-verbindingsreeks en de naam van de Event Hub.Add constants to the Program class for the Event Hubs connection string and the event hub name. Vervang de tijdelijke aanduidingen tussen de haakjes door de juiste waarden die zijn verkregen bij het maken van de Event Hub.Replace placeholders in brackets with the proper values that you got when creating the event hub. Vervang tijdelijke aanduidingen tussen de haakjes door de juiste waarden die u hebt verkregen bij het maken van de Event Hub en het opslagaccount (toegangssleutels - primaire verbindingsreeks).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). Zorg ervoor dat {Event Hubs namespace connection string} de verbindingsreeks op naamruimteniveau is en niet de event hub-tekenreeks.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. Vervang de Main-methode door de volgende async Main-methode.Replace the Main method with the following async Main method. Zie de opmerkingen bij de code voor meer informatie.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. Voeg nu de volgende gebeurtenis- en foutafhandelingsmethoden aan de klasse toe.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("\tReceived 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. Bouw het project en controleer of er geen fouten zijn.Build the project, and ensure that there are no errors.

    Notitie

    Zie dit bestand op de GitHub voor de volledige broncode met meer informatieve opmerkingen.For the complete source code with more informational comments, see this file on the GitHub.

  6. Voer de ontvangende toepassing uit.Run the receiver application.

  7. Als het goed is, ziet u nu een bericht dat de gebeurtenis is ontvangen.You should see a message that the event has been received.

    Gebeurtenis ontvangen

    Deze gebeurtenissen zijn de drie gebeurtenissen die u eerder naar de Event Hub hebt verzonden door het verzendprogramma uit te voeren.These events are the three events you sent to the event hub earlier by running the sender program.

Volgende stappenNext steps

Bekijk de voorbeelden op GitHub.Check out the samples on GitHub.