Quickstart: Berichten verzenden en ontvangen van een Azure Event Grid-naamruimteonderwerp (.NET)

In deze quickstart voert u de volgende stappen uit:

  1. Maak een Event Grid-naamruimte met behulp van Azure Portal.
  2. Maak een Event Grid-naamruimteonderwerp met behulp van Azure Portal.
  3. Maak een gebeurtenisabonnement met behulp van Azure Portal.
  4. Een .NET-consoletoepassing schrijven om een set berichten naar het onderwerp te verzenden
  5. Schrijf een .NET-consoletoepassing om deze berichten van het onderwerp te ontvangen.

Belangrijk

Naamruimten, naamruimteonderwerpen en gebeurtenisabonnementen die zijn gekoppeld aan naamruimteonderwerpen zijn in eerste instantie beschikbaar in de volgende regio's:

  • VS - oost
  • Central US
  • VS - zuid-centraal
  • VS - west 2
  • Azië - oost
  • Azië - zuidoost
  • Europa - noord
  • Europa -west
  • VAE - noord

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:

  1. Meld u aan bij Azure Portal.

  2. Voer in het zoekvak Event Grid-naamruimten in en selecteer Event Grid-naamruimten in de resultaten.

    Screenshot showing Event Grid Namespaces in the search results.

  3. Selecteer + Maken op de werkbalk op de pagina Event Grid-naamruimten.

    Screenshot showing Event Grid Namespaces page with the Create button on the toolbar selected.

  4. Volg deze stappen op de pagina Basisbeginselen .

    1. Selecteer het Azure-abonnement waarin u de naamruimte wilt maken.

    2. Selecteer een bestaande resourcegroep of maak een resourcegroep.

    3. Voer een naam in voor de naamruimte.

    4. Selecteer de regio of locatie waar u de naamruimte wilt maken.

    5. Selecteer Controleren en maken onderaan de pagina.

      Screenshot showing the Basics tab of Create namespace page.

  5. Controleer uw instellingen op het tabblad Controleren en maken en selecteer Maken.

  6. Selecteer op de pagina Implementatie geslaagd de optie Ga naar de resource om naar uw naamruimte te navigeren.

Een naamruimteonderwerp maken

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

  2. Selecteer op de pagina Event Grid-naamruimte de optie Onderwerpen in de sectie Eventing in het menu links.

  3. Selecteer op de pagina Onderwerpen de knop + Onderwerp op de opdrachtbalk.

    Screenshot showing Event Grid namespace topic creation.

  4. Typ op de pagina Onderwerp maken de naam van het onderwerp dat u wilt maken en selecteer Maken.

    Screenshot showing Event Grid namespace topic creation basics.

Een gebeurtenisabonnement maken

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

  2. Selecteer op de pagina Event Gird Namespace Topic de optie Abonnementen in de sectie Entiteiten in het menu links.

  3. Selecteer op de pagina Abonnementen de knop + Abonnement op de opdrachtbalk.

    Screenshot showing Event Grid event subscription create.

  4. Typ op het tabblad Basisinformatie de naam van het onderwerp dat u wilt maken en selecteer vervolgens Volgende: Filters onder aan de pagina.

    Screenshot showing Event Grid event subscription create basics.

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

    Screenshot showing Event Grid event subscription create filters.

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

    Screenshot showing Event Grid event subscription create additional features.

  7. 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 dit document ziet u hoe u een verbindingsreeks gebruikt om verbinding te maken met een Event Grid-naamruimte. Als u nog geen gebruik hebt gemaakt van Azure, kunt u de verbindingsreeks optie gemakkelijker 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:

  1. Selecteer Onderwerpen op de pagina Event Grid-naamruimte.
  2. Selecteer het onderwerp dat u moet openen.
  3. 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

U kunt toegang tot de Event Grid-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.

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

  1. Selecteer in Visual Studio het menu File ->New ->Project .

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

    1. Selecteer de programmeertaal C#.

    2. Selecteer Console als het type toepassing.

    3. Selecteer Console-app in de lijst met resultaten.

    4. Selecteer vervolgens Volgende.

      Screenshot showing the Create a new project dialog box with C# and Console selected.

  3. Voer EventSender in voor de projectnaam, EventGridQuickStart voor de naam van de oplossing en selecteer vervolgens Volgende.

    Screenshot showing the solution and project names in the Configure your new project dialog box.

  4. Selecteer Op de pagina Aanvullende informatie de optie Maken om de oplossing en het project te maken.

De NuGet-pakketten toevoegen aan het project

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

  2. Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.EventGrid te installeren:

    Install-Package Azure.Messaging.EventGrid -version 4.22.0-beta.1
    

Code toevoegen om een gebeurtenis te verzenden naar het onderwerp van de naamruimte

  1. Vervang de inhoud door Program.cs de volgende code. De belangrijke stappen worden beschreven, met aanvullende informatie in de codeopmerkingen.

    Belangrijk

    Tijdelijke aanduidingen (<ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, <TOPIC-SUBSCRIPTION-NAME>) in het codefragment bijwerken met uw onderwerpeindpunt, onderwerpnaam, onderwerpsleutel, abonnementsnaam van onderwerp.

    using Azure.Messaging;
    using Azure;
    using Azure.Messaging.EventGrid.Namespaces;    
    
    // TODO: Replace the <ENDPOINT> , <TOPIC-KEY> and <TOPIC-NAME> placeholder
    
    var topicEndpoint = "<TOPIC-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    var topicKey = "<TOPIC-ACCESS-KEY>";
    var topicName = "<TOPIC-NAME>";
    var subscription = "<TOPIC-SUBSCRIPTION-NAME>";
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridClient(new Uri(topicEndpoint), 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.PublishCloudEventAsync(topicName, ev);
    
    // Publish a batch of CloudEvents.
    
    await client.PublishCloudEventsAsync(
    topicName,
    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; }
    }    
    
    
  2. Bouw het project en controleer of er geen fouten zijn.

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

  4. Volg deze stappen in Azure Portal:

    1. Navigeer naar uw Event Grid-naamruimte.

    2. Op de pagina Overzicht ziet u het aantal gebeurtenissen dat in de naamruimte in de grafiek is geplaatst.

      Screenshot showing the Event Grid Namespace page in the 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

  1. Klik in het venster Solution Explorer met de rechtermuisknop op de EventGridQuickStart-oplossing, wijs Toevoegen aan en selecteer Nieuw project.
  2. Selecteer Consoletoepassing en selecteer Volgende.
  3. Voer EventReceiver in voor de projectnaam en selecteer Maken.
  4. Klik in het venster Solution Explorer met de rechtermuisknop op EventReceiver en selecteer Instellen als opstartproject.

De NuGet-pakketten toevoegen aan het project

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

  2. 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 -version 4.22.0-beta.1
    

    Screenshot showing EventReceiver project selected in the Package Manager Console.

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.

  1. Voeg in de Program klasse de volgende code toe:

    Belangrijk

    Tijdelijke aanduidingen (<ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, <TOPIC-SUBSCRIPTION-NAME>) in het codefragment bijwerken met uw onderwerpeindpunt, onderwerpnaam, onderwerpsleutel, abonnementsnaam van onderwerp.

    using Azure;
    using Azure.Messaging;
    using Azure.Messaging.EventGrid.Namespaces;
    
    var topicEndpoint = "<TOPIC-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    var topicKey = "<TOPIC-ACCESS-KEY>";
    var topicName = "<TOPIC-NAME>";
    var subscription = "<TOPIC-SUBSCRIPTION-NAME>";
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridClient(new Uri(topicEndpoint), new AzureKeyCredential(topicKey));
    
    // Receive the published CloudEvents
    ReceiveResult result = await client.ReceiveCloudEventsAsync(topicName, subscription, 3);
    
    Console.WriteLine("Received Response");
    Console.WriteLine("-----------------");
    
    
  2. 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.Value)
    {
        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.ReleaseCloudEventsAsync(topicName, subscription, new ReleaseOptions(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.AcknowledgeCloudEventsAsync(topicName, subscription, new AcknowledgeOptions(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.RejectCloudEventsAsync(topicName, subscription, new RejectOptions(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; }
    }    
    

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.

Zie naslaginformatie over de .NET-API.