Delen via


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.

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.

    Schermopname van Event Grid-naamruimten in de zoekresultaten.

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

    Schermopname van de pagina Event Grid-naamruimten met de knop Maken op de werkbalk geselecteerd.

  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.

      Schermopname van het tabblad Basis van de pagina Naamruimte maken.

  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 Event Broker in het linkermenu.

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

    Schermopname van het maken van een Event Grid-naamruimteonderwerp.

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

    Schermopname van de basisbeginselen van het maken van event grid-naamruimten.

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.

    Schermopname van de pagina Event Grid-onderwerpen met een onderwerp geselecteerd.

  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.

    Schermopname van het maken van een Event Grid-gebeurtenisabonnement.

  4. Voer op het tabblad Basisinformatie de volgende stappen uit:

    1. Voer een naam in voor het abonnement dat u wilt maken

    2. Controleer of het leveringsschema is ingesteld op Cloud Events v1.0.

    3. Controleer of de bezorgingsmodus is ingesteld op Wachtrij (pull-modus).

    4. Selecteer Volgende: Filters onder aan de pagina.

      Schermopname van het Event Grid-gebeurtenisabonnement: basisbeginselen maken.

  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.

    Schermopname van het maken van filters voor Event Grid-gebeurtenisabonnementen.

  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.

    Schermopname van het Event Grid-gebeurtenisabonnement om extra functies te maken.

  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 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:

  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.

    Schermopname van de toegangssleutel voor een Event Grid-onderwerp.

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

  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.

      Schermopname van het dialoogvenster Een nieuw project maken met C# en Console geselecteerd.

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

    Schermopname van de oplossings- en projectnamen in het dialoogvenster Uw nieuwe project configureren.

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

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 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; }
    }
    
    
  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.

      Schermopname van de event grid-naamruimtepagina 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

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

    Schermopname van het EventReceiver-project dat is geselecteerd in de Pakketbeheer 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 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("-----------------");
    
    
  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.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; }
    }    
    
    
  3. Klik in het venster Solution Explorer met de rechtermuisknop op EventReceiver-project en selecteer Instellen als opstartproject.

  4. Bouw het project en controleer of er geen fouten zijn.

  5. Voer de EventReceiver-toepassing uit en bevestig dat u de drie gebeurtenissen in het uitvoervenster ziet.

    Schermopname van de uitvoer van de ontvanger-app.

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.