Quickstart: Gebeurtenissen verzenden naar en ontvangen van Azure Event Hubs met behulp van .NET
In deze quickstart leert u hoe u gebeurtenissen naar een Event Hub verzendt en deze gebeurtenissen vervolgens ontvangt van de Event Hub met behulp van de Azure.Messaging.EventHubs .NET-bibliotheek.
Notitie
Snelstartgidsen zijn bedoeld om snel aan de slag te gaan met de service. Als u al bekend bent met de service, wilt u misschien .NET-voorbeelden voor Event Hubs bekijken in onze .NET SDK-opslagplaats op GitHub: Event Hubs-voorbeelden op GitHub, eventprocessorvoorbeelden op GitHub.
Vereisten
Als u niet eerder met Azure Event Hubs werkt, raadpleegt u het overzicht van Event Hubs voordat u deze quickstart doorloopt.
Voor het voltooien van deze snelstart moet aan de volgende vereisten worden voldaan:
- Microsoft Azure-abonnement. Als u Azure-services wilt gebruiken, met inbegrip van Azure Event Hubs, hebt u een abonnement nodig. 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.
- Microsoft Visual Studio 2022. De Azure Event Hubs-clientbibliotheek maakt gebruik van nieuwe functies die in C# 8.0 zijn geïntroduceerd. U kunt de bibliotheek nog steeds gebruiken met eerdere C#-taalversies, maar de nieuwe syntaxis is niet beschikbaar. Als u de volledige syntaxis wilt gebruiken, raden we u aan om te compileren met de .NET Core SDK 3.0 of hoger en de taalversie ingesteld op
latest
. Als u Visual Studio gebruikt, zijn versies vóór Visual Studio 2022 niet compatibel met de hulpprogramma's die nodig zijn om C# 8.0-projecten te bouwen. Visual Studio 2022, inclusief de gratis Community-editie, kan hier worden gedownload. - Een Event Hubs-naamruimte en een Event Hub maken. De eerste stap is het gebruik van Azure Portal om een Event Hubs-naamruimte en een Event Hub in de naamruimte te maken. Haal vervolgens de beheerreferenties op die uw toepassing nodig heeft om te communiceren met de Event Hub. Als u een naamruimte en een Event Hub wilt maken, raadpleegt u quickstart: Een Event Hub maken met behulp van Azure Portal.
De app verifiëren bij Azure
In deze quickstart ziet u twee manieren om verbinding te maken met Azure Event Hubs:
- Wachtwoordloos (Microsoft Entra-verificatie)
- Connection string
De eerste optie laat zien hoe u uw beveiligingsprincipaal gebruikt in Azure Active Directory en op rollen gebaseerd toegangsbeheer (RBAC) om verbinding te maken met een Event Hubs-naamruimte. U hoeft zich geen zorgen te maken over in code vastgelegde verbindingsreeks s in uw code of in een configuratiebestand of in een beveiligde opslag, zoals Azure Key Vault.
De tweede optie laat zien hoe u een verbindingsreeks gebruikt om verbinding te maken met een Event Hubs-naamruimte. Als u nog geen gebruik hebt gemaakt van Azure, kunt u de verbindingsreeks optie gemakkelijker volgen. We raden u aan de optie zonder wachtwoord te gebruiken in echte toepassingen en productieomgevingen. Zie Verificatie en autorisatie voor meer informatie. U kunt ook meer lezen over verificatie zonder wachtwoord op de overzichtspagina.
Rollen toewijzen aan uw Microsoft Entra-gebruiker
Zorg er bij het lokaal ontwikkelen voor dat het gebruikersaccount dat verbinding maakt met Azure Event Hubs over de juiste machtigingen beschikt. U hebt de rol Azure Event Hubs-gegevenseigenaar nodig om berichten te kunnen verzenden en ontvangen. Als u uzelf deze rol wilt toewijzen, hebt u de rol Gebruikerstoegang Beheer istrator of een andere rol nodig die de Microsoft.Authorization/roleAssignments/write
actie bevat. U kunt Azure RBAC-rollen toewijzen aan een gebruiker met behulp van Azure Portal, Azure CLI of Azure PowerShell. Meer informatie over de beschikbare bereiken voor roltoewijzingen op de overzichtspagina van het bereik.
In het volgende voorbeeld wordt de Azure Event Hubs Data Owner
rol toegewezen aan uw gebruikersaccount, dat volledige toegang biedt tot Azure Event Hubs-resources. Volg in een echt scenario het principe van minimale bevoegdheden om gebruikers alleen de minimale machtigingen te geven die nodig zijn voor een veiligere productieomgeving.
Ingebouwde Azure-rollen voor Azure Event Hubs
Voor Azure Event Hubs is het beheer van naamruimten en alle gerelateerde resources via Azure Portal en de Azure Resource Management-API al beveiligd met behulp van het Azure RBAC-model. Azure biedt de onderstaande ingebouwde Azure-rollen voor het autoriseren van toegang tot een Event Hubs-naamruimte:
- Azure Event Hubs-gegevenseigenaar: maakt gegevenstoegang tot de Event Hubs-naamruimte en de bijbehorende entiteiten mogelijk (wachtrijen, onderwerpen, abonnementen en filters)
- Azure Event Hubs-gegevenszender: gebruik deze rol om de afzender toegang te geven tot de Event Hubs-naamruimte en de bijbehorende entiteiten.
- Azure Event Hubs-gegevensontvanger: gebruik deze rol om de ontvanger toegang te geven tot de Event Hubs-naamruimte en de bijbehorende entiteiten.
Als u een aangepaste rol wilt maken, raadpleegt u Rechten die vereist zijn voor Event Hubs-bewerkingen.
Belangrijk
In de meeste gevallen duurt het een paar minuten voordat de roltoewijzing is doorgegeven in Azure. In zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.
Zoek in Azure Portal uw Event Hubs-naamruimte met behulp van de hoofdzoekbalk of linkernavigatiebalk.
Selecteer op de overzichtspagina toegangsbeheer (IAM) in het linkermenu.
Selecteer op de pagina Toegangsbeheer (IAM) het tabblad Roltoewijzingen .
Selecteer + Toevoegen in het bovenste menu en voeg vervolgens roltoewijzing toe in de resulterende vervolgkeuzelijst.
Gebruik het zoekvak om de resultaten te filteren op de gewenste rol. In dit voorbeeld zoekt
Azure Event Hubs Data Owner
en selecteert u het overeenkomende resultaat. Kies vervolgens Volgende.Selecteer onder Toegang toewijzen de optie Gebruiker, groep of service-principal en kies vervolgens + Leden selecteren.
Zoek in het dialoogvenster naar uw Microsoft Entra-gebruikersnaam (meestal uw user@domain e-mailadres) en kies Vervolgens onderaan het dialoogvenster Selecteren .
Selecteer Beoordelen + toewijzen om naar de laatste pagina te gaan en vervolgens opnieuw beoordelen en toewijzen om het proces te voltooien.
Visual Studio starten en u aanmelden bij Azure
U kunt toegang tot de Service Bus-naamruimte autoriseren met behulp van de volgende stappen:
Start Visual Studio. Als u het venster Aan de slag ziet, selecteert u de koppeling Doorgaan zonder code in het rechterdeelvenster.
Selecteer de knop Aanmelden in de rechterbovenhoek van Visual Studio.
Meld u aan met het Microsoft Entra-account waaraan u eerder een rol hebt toegewezen.
Gebeurtenissen verzenden naar de Event Hub
In deze sectie wordt beschreven hoe u een .NET Core-consoletoepassing maakt om gebeurtenissen te verzenden naar de Event Hub die u hebt gemaakt.
Een consoletoepassing maken
Als Visual Studio 2022 al is geopend, selecteert u Bestand in het menu, selecteert u Nieuw en selecteert u Vervolgens Project. Anders start u Visual Studio 2022 en selecteert u Een nieuw project maken als u een pop-upvenster ziet.
Voer in het dialoogvenster Een nieuw project maken de volgende stappen uit: Als u dit dialoogvenster niet ziet, selecteert u Bestand in het menu, selecteert u Nieuw en selecteert u Vervolgens Project.
Selecteer de programmeertaal C#.
Selecteer Console als het type toepassing.
Selecteer Consoletoepassing in de lijst met resultaten.
Selecteer vervolgens Volgende.
Voer EventHubsSender in voor de projectnaam, EventHubsQuickStart voor de naam van de oplossing en selecteer vervolgens Volgende.
Selecteer Maken op de pagina Aanvullende informatie.
De NuGet-pakketten toevoegen aan het project
Selecteer Tools>NuGet-pakketbeheer>Package Manager Console in het menu.
Voer de volgende opdrachten uit om Azure.Messaging.EventHubs en Azure.Identity NuGet-pakketten te installeren. Druk op ENTER om de tweede opdracht uit te voeren.
Install-Package Azure.Messaging.EventHubs Install-Package Azure.Identity
Code schrijven om gebeurtenissen naar de Event Hub te verzenden
Vervang de bestaande code in het
Program.cs
bestand door de volgende voorbeeldcode.<EVENT_HUB_NAMESPACE>
Vervang vervolgens waarden en<HUB_NAME>
tijdelijke aanduidingen voor deEventHubProducerClient
parameters door de namen van uw Event Hubs-naamruimte en de Event Hub. Bijvoorbeeld:"spehubns0309.servicebus.windows.net"
en"spehub"
.Hier volgen de belangrijke stappen uit de code:
- Hiermee maakt u een EventHubProducerClient-object met behulp van de naamruimte en de naam van de Event Hub.
- Roept de methode CreateBatchAsync aan op het EventHubProducerClient-object om een EventDataBatch-object te maken.
- Voeg gebeurtenissen toe aan de batch met behulp van de methode EventDataBatch.TryAdd .
- Verzendt de batch berichten naar de Event Hub met behulp van de methode EventHubProducerClient.SendAsync .
using Azure.Identity; using Azure.Messaging.EventHubs; using Azure.Messaging.EventHubs.Producer; using System.Text; // number of events to be sent to the event hub int numOfEvents = 3; // The Event Hubs client types are safe to cache and use as a singleton for the lifetime // of the application, which is best practice when events are being published or read regularly. // TODO: Replace the <EVENT_HUB_NAMESPACE> and <HUB_NAME> placeholder values EventHubProducerClient producerClient = new EventHubProducerClient( "<EVENT_HUB_NAMESPACE>.servicebus.windows.net", "<HUB_NAME>", new DefaultAzureCredential()); // Create a batch of events using EventDataBatch eventBatch = await producerClient.CreateBatchAsync(); for (int i = 1; i <= numOfEvents; i++) { if (!eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes($"Event {i}")))) { // if it is too large for the batch throw new Exception($"Event {i} is too large for the batch and cannot be sent."); } } try { // Use the producer client to send the batch of events to the event hub await producerClient.SendAsync(eventBatch); Console.WriteLine($"A batch of {numOfEvents} events has been published."); Console.ReadLine(); } finally { await producerClient.DisposeAsync(); }
Bouw het project en controleer of er geen fouten zijn.
Voer het programma uit en wacht op het bevestigingsbericht.
A batch of 3 events has been published.
Belangrijk
Als u verificatie zonder wachtwoord (op rollen gebaseerd toegangsbeheer) van Azure Active Directory gebruikt, selecteert u Extra en selecteert u Vervolgens Opties. Vouw azure-serviceverificatie uit in het venster Opties en selecteer Accountselectie. Controleer of u het account gebruikt dat is toegevoegd aan de rol Azure Event Hubs-gegevenseigenaar in de Event Hubs-naamruimte.
Op de pagina Event Hubs-naamruimte in Azure Portal ziet u drie binnenkomende berichten in de grafiek Berichten . Vernieuw de pagina om de grafiek zo nodig bij te werken. Het kan een paar seconden duren voordat wordt weergegeven dat de berichten zijn ontvangen.
Notitie
Zie dit bestand op de GitHub voor de volledige broncode met meer informatieve opmerkingen
Gebeurtenissen ontvangen van de Event Hub
In deze sectie wordt beschreven hoe u een .NET Core-consoletoepassing schrijft die gebeurtenissen ontvangt van een Event Hub met behulp van een gebeurtenisprocessor. De gebeurtenisprocessor vereenvoudigt het ontvangen van gebeurtenissen van Event Hubs.
Een Azure Storage-account en een blobcontainer maken
In deze quickstart gebruikt u Azure Storage als controlepuntopslag. Volg deze stappen om een Azure Storage-account te maken.
- Een Azure Storage-account maken
- Een blobcontainer maken
- Verifieer bij de blobcontainer met behulp van Microsoft Entra ID-verificatie (zonder wachtwoord) of een verbindingsreeks voor de naamruimte.
Volg deze aanbevelingen wanneer u Azure Blob Storage gebruikt als controlepuntarchief:
- Gebruik een afzonderlijke container voor elke consumentengroep. U kunt hetzelfde opslagaccount gebruiken, maar één container per groep gebruiken.
- Gebruik de container niet voor iets anders en gebruik het opslagaccount niet voor iets anders.
- Het opslagaccount moet zich in dezelfde regio bevinden als waarin de geïmplementeerde toepassing zich bevindt. Als de toepassing on-premises is, probeert u de dichtstbijzijnde regio te kiezen.
Controleer op de pagina Opslagaccount in Azure Portal in de sectie Blob-service of de volgende instellingen zijn uitgeschakeld.
- Hiërarchische naamruimte
- Blob voorlopig verwijderen
- Versiebeheer
Zorg er bij het lokaal ontwikkelen voor dat het gebruikersaccount dat toegang heeft tot blobgegevens over de juiste machtigingen beschikt. U hebt Inzender voor Opslagblobgegevens nodig om blobgegevens te lezen en schrijven. Als u uzelf deze rol wilt toewijzen, moet u de rol Gebruikerstoegang Beheer istrator of een andere rol met de actie Microsoft.Authorization/roleAssignments/write toegewezen krijgen. U kunt Azure RBAC-rollen toewijzen aan een gebruiker met behulp van Azure Portal, Azure CLI of Azure PowerShell. Meer informatie over de beschikbare bereiken voor roltoewijzingen vindt u op de overzichtspagina van het bereik.
In dit scenario wijst u machtigingen toe aan uw gebruikersaccount, dat is afgestemd op het opslagaccount, om het principe van minimale bevoegdheden te volgen. Deze procedure biedt gebruikers alleen de minimale machtigingen die nodig zijn en maakt veiligere productieomgevingen.
In het volgende voorbeeld wordt de rol Inzender voor opslagblobgegevens toegewezen aan uw gebruikersaccount, dat zowel lees- als schrijftoegang biedt tot blobgegevens in uw opslagaccount.
Belangrijk
In de meeste gevallen duurt het een of twee minuten voordat de roltoewijzing is doorgegeven in Azure, maar in zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.
Zoek uw opslagaccount in Azure Portal met behulp van de hoofdzoekbalk of linkernavigatiebalk.
Selecteer op de overzichtspagina van het opslagaccount toegangsbeheer (IAM) in het menu aan de linkerkant.
Selecteer op de pagina Toegangsbeheer (IAM) het tabblad Roltoewijzingen .
Selecteer + Toevoegen in het bovenste menu en voeg vervolgens roltoewijzing toe in de resulterende vervolgkeuzelijst.
Gebruik het zoekvak om de resultaten te filteren op de gewenste rol. Zoek in dit voorbeeld naar Inzender voor Opslagblobgegevens en selecteer het overeenkomende resultaat en kies vervolgens Volgende.
Selecteer onder Toegang toewijzen de optie Gebruiker, groep of service-principal en kies vervolgens + Leden selecteren.
Zoek in het dialoogvenster naar uw Microsoft Entra-gebruikersnaam (meestal uw user@domain e-mailadres) en kies Vervolgens onderaan het dialoogvenster Selecteren .
Selecteer Beoordelen + toewijzen om naar de laatste pagina te gaan en vervolgens opnieuw beoordelen en toewijzen om het proces te voltooien.
Een project maken voor de ontvanger
- Klik in het Solution Explorer-venster met de rechtermuisknop op de oplossing EventHubQuickStart, wijs naar Toevoegen en selecteer Nieuw project.
- Selecteer Consoletoepassing en selecteer Volgende.
- Voer EventHubsReceiver in als Projectnaam en selecteer Maken.
- Klik in het venster Solution Explorer met de rechtermuisknop op EventHubsReceiver en selecteer Instellen als opstartproject.
De NuGet-pakketten toevoegen aan het project
Selecteer Tools>NuGet-pakketbeheer>Package Manager Console in het menu.
Controleer in het venster Pakketbeheer Console of EventHubsReceiver is geselecteerd voor het standaardproject. Als dat niet het geval is, gebruikt u de vervolgkeuzelijst om EventHubsReceiver te selecteren.
Voer de volgende opdracht uit om de Azure.Messaging.EventHubs en de Azure.Identity NuGet-pakketten te installeren. Druk op ENTER om de laatste opdracht uit te voeren.
Install-Package Azure.Messaging.EventHubs Install-Package Azure.Messaging.EventHubs.Processor Install-Package Azure.Identity
De code bijwerken
Vervang de inhoud van Program.cs door de volgende code:
Vervang de bestaande code in het
Program.cs
bestand door de volgende voorbeeldcode. Vervang vervolgens de<STORAGE_ACCOUNT_NAME>
waarden en<BLOB_CONTAINER_NAME>
tijdelijke aanduidingen voor deBlobContainerClient
URI. Vervang ook de<EVENT_HUB_NAMESPACE>
waarden en<HUB_NAME>
tijdelijke aanduidingen voor deEventProcessorClient
waarden.Hier volgen de belangrijke stappen uit de code:
- Hiermee maakt u een EventProcessorClient-object met behulp van de Event Hubs-naamruimte en de naam van de Event Hub. U moet een BlobContainerClient-object maken voor de container in de Azure-opslag die u eerder hebt gemaakt.
- Hiermee geeft u handlers op voor de gebeurtenissen ProcessEventAsync en ProcessErrorAsync van het EventProcessorClient-object .
- Begint met het verwerken van gebeurtenissen door de StartProcessingAsync aan te roepen op het EventProcessorClient-object .
- Stopt de verwerking van gebeurtenissen na 30 seconden door StopProcessingAsync aan te roepen op het EventProcessorClient-object.
using Azure.Identity; using Azure.Messaging.EventHubs; using Azure.Messaging.EventHubs.Consumer; using Azure.Messaging.EventHubs.Processor; using Azure.Storage.Blobs; using System.Text; // Create a blob container client that the event processor will use // TODO: Replace <STORAGE_ACCOUNT_NAME> and <BLOB_CONTATINAER_NAME> with actual names BlobContainerClient storageClient = new BlobContainerClient( new Uri("https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/<BLOB_CONTAINER_NAME>"), new DefaultAzureCredential()); // Create an event processor client to process events in the event hub // TODO: Replace the <EVENT_HUBS_NAMESPACE> and <HUB_NAME> placeholder values var processor = new EventProcessorClient( storageClient, EventHubConsumerClient.DefaultConsumerGroupName, "<EVENT_HUB_NAMESPACE>.servicebus.windows.net", "<HUB_NAME>", new DefaultAzureCredential()); // Register handlers for processing events and handling errors processor.ProcessEventAsync += ProcessEventHandler; processor.ProcessErrorAsync += ProcessErrorHandler; // Start the processing await processor.StartProcessingAsync(); // Wait for 30 seconds for the events to be processed await Task.Delay(TimeSpan.FromSeconds(30)); // Stop the processing await processor.StopProcessingAsync(); 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())); Console.ReadLine(); return Task.CompletedTask; } 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); Console.ReadLine(); return Task.CompletedTask; }
Bouw het project en controleer of er geen fouten zijn.
Notitie
Zie dit bestand op de GitHub voor de volledige broncode met meer informatieve opmerkingen.
Voer de ontvangende toepassing uit.
U ziet nu een bericht dat de gebeurtenissen zijn ontvangen. Druk op Enter nadat u een ontvangen gebeurtenisbericht ziet.
Received event: Event 1 Received event: Event 2 Received event: Event 3
Deze gebeurtenissen zijn de drie gebeurtenissen die u eerder naar de Event Hub hebt verzonden door het verzendprogramma uit te voeren.
In Azure Portal kunt u controleren of er drie uitgaande berichten zijn, die Event Hubs naar de ontvangende toepassing hebben verzonden. U moet de pagina vernieuwen om de grafiek bij te werken. Het kan een paar seconden duren voordat wordt weergegeven dat de berichten zijn ontvangen.
Schemavalidatie voor Event Hubs SDK-toepassingen
U kunt Azure Schema Registry gebruiken om schemavalidatie uit te voeren wanneer u gegevens streamt met uw Event Hubs SDK-toepassingen. Azure Schema Registry van Event Hubs biedt een gecentraliseerde opslagplaats voor het beheren van schema's en u kunt uw nieuwe of bestaande toepassingen naadloos verbinden met Schema Registry.
Zie Schema's valideren met Event Hubs SDK voor meer informatie.
Voorbeelden en naslaginformatie
Deze quickstart bevat stapsgewijze instructies voor het implementeren van een scenario voor het verzenden van een batch gebeurtenissen naar een Event Hub en deze vervolgens ontvangt. Selecteer de volgende koppelingen voor meer voorbeelden.
- Event Hubs-voorbeelden op Github
- Voorbeelden van gebeurtenisprocessor op GitHub
- Azure RBAC-voorbeeld (op rollen gebaseerd toegangsbeheer)
Raadpleeg onze SDK-documentatie voor volledige naslaginformatie over de .NET-bibliotheek.
Resources opschonen
Verwijder de resourcegroep met de Event Hubs-naamruimte of verwijder alleen de naamruimte als u de resourcegroep wilt behouden.
Gerelateerde inhoud
Zie de volgende zelfstudie: