Quickstart: Berichten verzenden en ontvangen van een Azure Event Grid-naamruimteonderwerp (.NET)
In deze quickstart voert u de volgende stappen uit:
- Maak een Event Grid-naamruimte met behulp van Azure Portal.
- Maak een Event Grid-naamruimteonderwerp met behulp van Azure Portal.
- Maak een gebeurtenisabonnement met behulp van Azure Portal.
- Een .NET-consoletoepassing schrijven om een set berichten naar het onderwerp te verzenden
- Schrijf een .NET-consoletoepassing om deze berichten van het onderwerp te ontvangen.
Notitie
Deze quickstart bevat stapsgewijze instructies voor het implementeren van een eenvoudig scenario voor het verzenden van een batch berichten naar een Event Grid-naamruimteonderwerp en deze vervolgens te ontvangen. Zie de Azure Event Grid-clientbibliotheek voor .NET voor een overzicht van de .NET-clientbibliotheek. Zie Event Grid .NET-voorbeelden op GitHub voor meer voorbeelden.
Vereisten
Als u geen toegang hebt tot de service, raadpleegt u het Event Grid-overzicht voordat u deze quickstart uitvoert.
- Azure-abonnement. Als u Azure-services, waaronder Azure Event Grid, wilt gebruiken, hebt u een abonnement nodig. Als u geen bestaand Azure-account hebt, kunt u zich aanmelden voor een gratis proefversie.
- Visual Studio 2022. De voorbeeldtoepassing maakt gebruik van nieuwe functies die zijn geïntroduceerd in C# 10. Als u de nieuwste syntaxis wilt gebruiken, raden we u aan .NET 6.0 of hoger te installeren en de taalversie in te stellen 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# 10-projecten te bouwen.
Een naamruimte in de Azure-portal maken
Een naamruimte in Azure Event Grid is een logische container voor een of meer onderwerpen, clients, clientgroepen, onderwerpruimten en machtigingsbindingen. Het biedt een unieke naamruimte, zodat u meerdere resources in dezelfde Azure-regio kunt hebben. Met een Azure Event Grid-naamruimte kunt u nu gerelateerde resources groeperen en beheren als één eenheid in uw Azure-abonnement.
Volg de volgende secties om een Azure Event Grid-naamruimte te maken, weer te geven en te beheren.
Ga als volgt te werk om een naamruimte te maken:
Meld u aan bij Azure Portal.
Voer in het zoekvak Event Grid-naamruimten in en selecteer Event Grid-naamruimten in de resultaten.
Selecteer + Maken op de werkbalk op de pagina Event Grid-naamruimten.
Volg deze stappen op de pagina Basisbeginselen .
Selecteer het Azure-abonnement waarin u de naamruimte wilt maken.
Selecteer een bestaande resourcegroep of maak een resourcegroep.
Voer een naam in voor de naamruimte.
Selecteer de regio of locatie waar u de naamruimte wilt maken.
Selecteer Controleren en maken onderaan de pagina.
Controleer uw instellingen op het tabblad Controleren en maken en selecteer Maken.
Selecteer op de pagina Implementatie geslaagd de optie Ga naar de resource om naar uw naamruimte te navigeren.
Een naamruimteonderwerp maken
Als u zich niet op de pagina Event Grid-naamruimte bevindt, volgt u de stappen voor het maken, weergeven en beheren van naamruimten om de naamruimte weer te geven die u wilt gebruiken om het onderwerp te maken.
Selecteer op de pagina Event Grid-naamruimte de optie Onderwerpen in de sectie Event Broker in het linkermenu.
Selecteer op de pagina Onderwerpen de knop + Onderwerp op de opdrachtbalk.
Typ op de pagina Onderwerp maken de naam van het onderwerp dat u wilt maken en selecteer Maken.
Een gebeurtenisabonnement maken
Als u zich op de pagina Onderwerpen van uw Event Grid-naamruimte in Azure Portal bevindt, selecteert u uw onderwerp in de lijst met onderwerpen. Als u zich op de pagina Onderwerpen bevindt, volgt u de instructies van het maken, weergeven en beheren van een naamruimteonderwerpen om het onderwerp te identificeren dat u wilt gebruiken om het gebeurtenisabonnement te maken.
Selecteer op de pagina Event Gird Namespace Topic de optie Abonnementen in de sectie Entiteiten in het menu links.
Selecteer op de pagina Abonnementen de knop + Abonnement op de opdrachtbalk.
Voer op het tabblad Basisinformatie de volgende stappen uit:
Voer een naam in voor het abonnement dat u wilt maken
Controleer of het leveringsschema is ingesteld op Cloud Events v1.0.
Controleer of de bezorgingsmodus is ingesteld op Wachtrij (pull-modus).
Selecteer Volgende: Filters onder aan de pagina.
Voeg op het tabblad Filters de namen toe van de gebeurtenistypen die u wilt filteren in het abonnement en voeg contextkenmerkfilters toe die u in het abonnement wilt gebruiken. Selecteer vervolgens Volgende: Aanvullende functies onder aan de pagina.
Op het tabblad Aanvullende functies kunt u de instellingen voor het bewaren van gebeurtenissen, het maximale aantal bezorgingen, de duur van de vergrendeling en de instellingen voor onbestelbare brieven opgeven.
Selecteer Maken om het gebeurtenisabonnement te maken.
De app verifiëren bij Azure
In deze quickstart ziet u manieren om verbinding te maken met Azure Event Grid: verbindingsreeks. In deze sectie wordt beschreven hoe u een verbindingsreeks gebruikt om verbinding te maken met een Event Grid-naamruimte. Als u niet eerder met Azure werkt, is de optie verbindingsreeks gemakkelijker te volgen. Als u een nieuwe Event Grid-naamruimte maakt, wordt automatisch een eerste primaire en secundaire sleutel gegenereerd die alle aspecten van de naamruimte of onderwerpen volledig beheer verleent. Een client kan de verbindingsreeks gebruiken om verbinding te maken met de Event Grid-naamruimte. Voer de volgende stappen uit om de toegangssleutels voor uw naamruimteonderwerp te kopiëren:
Selecteer Onderwerpen op de pagina Event Grid-naamruimte.
Selecteer het onderwerp dat u moet openen.
Selecteer op de pagina Toegangssleutels de knop Kopiëren naast Sleutel 1 of Sleutel 2 om de toegangssleutels naar het Klembord te kopiëren voor later gebruik. Plak deze waarde in Kladblok of een andere tijdelijke locatie.
Visual Studio starten
Start Visual Studio. Als u het venster Aan de slag ziet, selecteert u de koppeling Doorgaan zonder code in het rechterdeelvenster.
Berichten naar het onderwerp verzenden
In deze sectie wordt beschreven hoe u een .NET-consoletoepassing maakt voor het verzenden van berichten naar een Event Grid-onderwerp.
Een consoletoepassing maken
Selecteer in Visual Studio het menu File ->New ->Project .
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 Console-app in de lijst met resultaten.
Selecteer vervolgens Volgende.
Voer EventSender in voor de projectnaam, EventGridQuickStart voor de naam van de oplossing en selecteer vervolgens Volgende.
Selecteer Op de pagina Aanvullende informatie de optie Maken om de oplossing en het project te maken.
De NuGet-pakketten toevoegen aan het project
Selecteer Tools>NuGet-pakketbeheer>Package Manager Console in het menu.
Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.EventGrid te installeren:
Install-Package Azure.Messaging.EventGrid.Namespaces
Code toevoegen om een gebeurtenis te verzenden naar het onderwerp van de naamruimte
Vervang de inhoud door
Program.cs
de volgende code. De belangrijke stappen worden beschreven, met aanvullende informatie in de codeopmerkingen.Belangrijk
Tijdelijke aanduidingen voor waarden (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
, )<TOPIC-SUBSCRIPTION-NAME>
in het codefragment bijwerken met uw naamruimte-eindpunt, onderwerpnaam en onderwerpsleutel.using Azure.Messaging; using Azure; using Azure.Messaging.EventGrid.Namespaces; // TODO: Replace the following placeholders with appropriate values // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace. Prefix it with https://. // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. var namespaceEndpoint = "<NAMESPACE-ENDPOINT>"; // Name of the topic in the namespace var topicName = "<TOPIC-NAME>"; // Access key for the topic var topicKey = "<TOPIC-ACCESS-KEY>"; // Construct the client using an Endpoint for a namespace as well as the access key var client = new EventGridSenderClient(new Uri(namespaceEndpoint), topicName, new AzureKeyCredential(topicKey)); // Publish a single CloudEvent using a custom TestModel for the event data. var @ev = new CloudEvent("employee_source", "type", new TestModel { Name = "Bob", Age = 18 }); await client.SendAsync(ev); // Publish a batch of CloudEvents. await client.SendAsync( new[] { new CloudEvent("employee_source", "type", new TestModel { Name = "Tom", Age = 55 }), new CloudEvent("employee_source", "type", new TestModel { Name = "Alice", Age = 25 })}); Console.WriteLine("Three events have been published to the topic. Press any key to end the application."); Console.ReadKey(); public class TestModel { public string Name { get; set; } public int Age { get; set; } }
Bouw het project en controleer of er geen fouten zijn.
Voer het programma uit en wacht op het bevestigingsbericht.
Three events have been published to the topic. Press any key to end the application.
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.
Volg deze stappen in Azure Portal:
Berichten ophalen uit het onderwerp
In deze sectie maakt u een .NET-consoletoepassing die berichten van het onderwerp ontvangt.
Een project maken om de gepubliceerde CloudEvents te ontvangen
- Klik in het venster Solution Explorer met de rechtermuisknop op de EventGridQuickStart-oplossing, wijs Toevoegen aan en selecteer Nieuw project.
- Selecteer Consoletoepassing en selecteer Volgende.
- Voer EventReceiver in voor de projectnaam en selecteer Maken.
- Klik in het venster Solution Explorer met de rechtermuisknop op EventReceiver en selecteer Instellen als opstartproject.
De NuGet-pakketten toevoegen aan het project
Selecteer Tools>NuGet-pakketbeheer>Package Manager Console in het menu.
Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.EventGrid te installeren. Selecteer EventReceiver voor het standaardproject als dit nog niet is ingesteld.
Install-Package Azure.Messaging.EventGrid.Namespaces
Voeg de code toe voor het ontvangen van gebeurtenissen uit het onderwerp
In deze sectie voegt u code toe om berichten uit de wachtrij op te halen.
Voeg in de
Program
klasse de volgende code toe:Belangrijk
Tijdelijke aanduidingen voor waarden (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
, ,<TOPIC-ACCESS-KEY>
<TOPIC-SUBSCRIPTION-NAME>
) in het codefragment bijwerken met uw naamruimteeindpunt, onderwerpnaam, onderwerpsleutel, abonnementsnaam van onderwerp.using Azure; using Azure.Messaging; using Azure.Messaging.EventGrid.Namespaces; // TODO: Replace the following placeholders with appropriate values // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace // Example: https://namespace01.eastus-1.eventgrid.azure.net. var namespaceEndpoint = "<NAMESPACE-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. // Name of the topic in the namespace var topicName = "<TOPIC-NAME>"; // Access key for the topic var topicKey = "<TOPIC-ACCESS-KEY>"; // Name of the subscription to the topic var subscriptionName = "<TOPIC-SUBSCRIPTION-NAME>"; // Maximum number of events you want to receive const short MaxEventCount = 3; // Construct the client using an Endpoint for a namespace as well as the access key var client = new EventGridReceiverClient(new Uri(namespaceEndpoint), topicName, subscriptionName, new AzureKeyCredential(topicKey)); // Receive the published CloudEvents. ReceiveResult result = await client.ReceiveAsync(MaxEventCount); Console.WriteLine("Received Response"); Console.WriteLine("-----------------");
Voeg de volgende methoden toe aan het einde van de
Program
klasse.// handle received messages. Define these variables on the top. var toRelease = new List<string>(); var toAcknowledge = new List<string>(); var toReject = new List<string>(); // Iterate through the results and collect the lock tokens for events we want to release/acknowledge/result foreach (ReceiveDetails detail in result.Details) { CloudEvent @event = detail.Event; BrokerProperties brokerProperties = detail.BrokerProperties; Console.WriteLine(@event.Data.ToString()); // The lock token is used to acknowledge, reject or release the event Console.WriteLine(brokerProperties.LockToken); Console.WriteLine(); // If the event is from the "employee_source" and the name is "Bob", we are not able to acknowledge it yet, so we release it if (@event.Source == "employee_source" && @event.Data.ToObjectFromJson<TestModel>().Name == "Bob") { toRelease.Add(brokerProperties.LockToken); } // acknowledge other employee_source events else if (@event.Source == "employee_source") { toAcknowledge.Add(brokerProperties.LockToken); } // reject all other events else { toReject.Add(brokerProperties.LockToken); } } // Release/acknowledge/reject the events if (toRelease.Count > 0) { ReleaseResult releaseResult = await client.ReleaseAsync(toRelease); // Inspect the Release result Console.WriteLine($"Failed count for Release: {releaseResult.FailedLockTokens.Count}"); foreach (FailedLockToken failedLockToken in releaseResult.FailedLockTokens) { Console.WriteLine($"Lock Token: {failedLockToken.LockToken}"); Console.WriteLine($"Error Code: {failedLockToken.Error}"); Console.WriteLine($"Error Description: {failedLockToken.ToString}"); } Console.WriteLine($"Success count for Release: {releaseResult.SucceededLockTokens.Count}"); foreach (string lockToken in releaseResult.SucceededLockTokens) { Console.WriteLine($"Lock Token: {lockToken}"); } Console.WriteLine(); } if (toAcknowledge.Count > 0) { AcknowledgeResult acknowledgeResult = await client.AcknowledgeAsync(toAcknowledge); // Inspect the Acknowledge result Console.WriteLine($"Failed count for Acknowledge: {acknowledgeResult.FailedLockTokens.Count}"); foreach (FailedLockToken failedLockToken in acknowledgeResult.FailedLockTokens) { Console.WriteLine($"Lock Token: {failedLockToken.LockToken}"); Console.WriteLine($"Error Code: {failedLockToken.Error}"); Console.WriteLine($"Error Description: {failedLockToken.ToString}"); } Console.WriteLine($"Success count for Acknowledge: {acknowledgeResult.SucceededLockTokens.Count}"); foreach (string lockToken in acknowledgeResult.SucceededLockTokens) { Console.WriteLine($"Lock Token: {lockToken}"); } Console.WriteLine(); } if (toReject.Count > 0) { RejectResult rejectResult = await client.RejectAsync(toReject); // Inspect the Reject result Console.WriteLine($"Failed count for Reject: {rejectResult.FailedLockTokens.Count}"); foreach (FailedLockToken failedLockToken in rejectResult.FailedLockTokens) { Console.WriteLine($"Lock Token: {failedLockToken.LockToken}"); Console.WriteLine($"Error Code: {failedLockToken.Error}"); Console.WriteLine($"Error Description: {failedLockToken.ToString}"); } Console.WriteLine($"Success count for Reject: {rejectResult.SucceededLockTokens.Count}"); foreach (string lockToken in rejectResult.SucceededLockTokens) { Console.WriteLine($"Lock Token: {lockToken}"); } Console.WriteLine(); } public class TestModel { public string Name { get; set; } public int Age { get; set; } }
Klik in het venster Solution Explorer met de rechtermuisknop op EventReceiver-project en selecteer Instellen als opstartproject.
Bouw het project en controleer of er geen fouten zijn.
Voer de EventReceiver-toepassing uit en bevestig dat u de drie gebeurtenissen in het uitvoervenster ziet.
Resources opschonen
Navigeer naar uw Event Grid-naamruimte in Azure Portal en selecteer Verwijderen in Azure Portal om de Event Grid-naamruimte en het onderwerp erin te verwijderen.
Verwante onderwerpen
Zie naslaginformatie over de .NET-API.