Share via


Guida introduttiva: Inviare e ricevere messaggi da un argomento dello spazio dei nomi Griglia di eventi di Azure (.NET)

In questo avvio rapido si eseguono le operazioni seguenti:

  1. Creare uno spazio dei nomi di Griglia di eventi usando il portale di Azure.
  2. Creare un argomento dello spazio dei nomi di Griglia di eventi usando il portale di Azure.
  3. Creare una sottoscrizione di eventi usando il portale di Azure.
  4. Scrivere un'applicazione console .NET per inviare un set di messaggi all'argomento
  5. Scrivere un'applicazione console .NET per ricevere tali messaggi dall'argomento.

Nota

Questa guida introduttiva fornisce istruzioni dettagliate per implementare uno scenario semplice di invio di un batch di messaggi a un argomento dello spazio dei nomi di Griglia di eventi e quindi riceverli. Per una panoramica della libreria client .NET, vedere Griglia di eventi di Azure libreria client per .NET. Per altri esempi, vedere Esempi di Griglia di eventi .NET su GitHub.

Prerequisiti

Se non si ha familiarità con il servizio, vedere Panoramica di Griglia di eventi prima di eseguire questa guida introduttiva.

  • Sottoscrizione di Azure. Per usare i servizi di Azure, inclusa Griglia di eventi di Azure, è necessaria una sottoscrizione. Se non si ha un account Azure esistente, è possibile iscriversi per ottenere una versione di valutazione gratuita.
  • Visual Studio 2022. L'applicazione di esempio usa nuove funzionalità introdotte in C# 10. Per usare la sintassi più recente, è consigliabile installare .NET 6.0 o versione successiva e impostare la versione del linguaggio su latest. Se si usa Visual Studio, le versioni precedenti a Visual Studio 2022 non sono compatibili con gli strumenti necessari per compilare progetti C# 10.

Creare uno spazio dei nomi nel portale di Azure

Uno spazio dei nomi in Griglia di eventi di Azure è un contenitore logico per uno o più argomenti, client, gruppi client, spazi di argomenti e associazioni di autorizzazioni. Fornisce uno spazio dei nomi univoco, consentendo di avere più risorse nella stessa area di Azure. Con uno spazio dei nomi Griglia di eventi di Azure è ora possibile raggruppare le risorse correlate e gestirle come singola unità nella sottoscrizione di Azure.

Seguire le sezioni successive per creare, visualizzare e gestire uno spazio dei nomi Griglia di eventi di Azure.

Per creare uno spazio dei nomi:

  1. Accedere al portale di Azure.

  2. Nella casella di ricerca immettere Spazi dei nomi di Griglia di eventi e selezionare Spazi dei nomi di Griglia di eventi nei risultati.

    Screenshot che mostra gli spazi dei nomi di Griglia di eventi nei risultati della ricerca.

  3. Nella pagina Spazi dei nomi di Griglia di eventi selezionare + Crea sulla barra degli strumenti.

    Screenshot che mostra la pagina Spazi dei nomi di Griglia di eventi con il pulsante Crea sulla barra degli strumenti selezionata.

  4. Nella pagina Informazioni di base seguire questa procedura.

    1. Selezionare la sottoscrizione di Azure in cui creare lo spazio dei nomi.

    2. Selezionare un gruppo di risorse esistente o creare un gruppo di risorse.

    3. Immettere un nome per lo spazio dei nomi.

    4. Selezionare l'area o la località in cui si vuole creare lo spazio dei nomi.

    5. Selezionare Rivedi e crea nella parte inferiore della pagina.

      Screenshot che mostra la scheda Informazioni di base della pagina Crea spazio dei nomi.

  5. Nella scheda Rivedi e crea esaminare le impostazioni e selezionare Crea.

  6. Nella pagina Distribuzione completata selezionare Vai alla risorsa per passare allo spazio dei nomi.

Creare un argomento dello spazio dei nomi

  1. Se non si è nella pagina Spazio dei nomi di Griglia di eventi, seguire i passaggi per creare, visualizzare e gestire gli spazi dei nomi per visualizzare lo spazio dei nomi da usare per creare l'argomento.

  2. Nella pagina Spazio dei nomi griglia di eventi selezionare l'opzione Argomenti nella sezione Eventi nel menu a sinistra.

  3. Nella pagina Argomenti selezionare il pulsante + Argomento sulla barra dei comandi.

    Screenshot che mostra la creazione di argomenti dello spazio dei nomi di Griglia di eventi.

  4. Nella pagina Crea argomento digitare il nome dell'argomento da creare e selezionare Crea.

    Screenshot che mostra le nozioni di base sulla creazione degli argomenti di Griglia di eventi.

Creare una sottoscrizione di eventi

  1. Se si è nella pagina Argomenti dello spazio dei nomi di Griglia di eventi nella portale di Azure, selezionare l'argomento nell'elenco degli argomenti. Se si è nella pagina Argomenti , seguire le istruzioni fornite da creare, visualizzare e gestire argomenti dello spazio dei nomi per identificare l'argomento da usare per creare la sottoscrizione di eventi.

  2. Nella pagina Event Gird Namespace Topic (Argomento spazio dei nomi Gird evento) selezionare l'opzione Subscriptions (Sottoscrizioni) nella sezione Entities (Entità) nel menu a sinistra.

  3. Nella pagina Sottoscrizioni selezionare il pulsante "+ Sottoscrizione" sulla barra dei comandi.

    Screenshot che mostra la creazione della sottoscrizione di eventi di Griglia di eventi.

  4. Nella scheda Informazioni di base digitare il nome dell'argomento da creare e quindi selezionare Avanti: Filtri nella parte inferiore della pagina.

    Screenshot che mostra le nozioni di base sulla creazione della sottoscrizione di eventi di Griglia di eventi.

  5. Nella scheda Filtri aggiungere i nomi dei tipi di evento da filtrare nella sottoscrizione e aggiungere i filtri degli attributi di contesto da usare nella sottoscrizione. Selezionare quindi Avanti: Funzionalità aggiuntive nella parte inferiore della pagina.

    Screenshot che mostra i filtri di creazione della sottoscrizione di eventi di Griglia di eventi.

  6. Nella scheda Funzionalità aggiuntive è possibile specificare la conservazione degli eventi, il numero massimo di recapito, la durata del blocco e le impostazioni di messaggi non recapitabili.

    Screenshot che mostra la creazione di funzionalità aggiuntive per la sottoscrizione di eventi di Griglia di eventi.

  7. Selezionare Crea per creare la sottoscrizione di eventi.

Autenticare l'app in Azure

Questa guida introduttiva illustra le modalità di connessione a Griglia di eventi di Azure: stringa di connessione.

Questo documento illustra come usare un stringa di connessione per connettersi a uno spazio dei nomi di Griglia di eventi. Se non si ha familiarità con Azure, è possibile trovare l'opzione stringa di connessione più semplice da seguire.

La creazione di un nuovo spazio dei nomi di Griglia di eventi genera automaticamente una chiave primaria e secondaria iniziale che ogni concede il controllo completo su tutti gli aspetti dello spazio dei nomi o degli argomenti.

Un client può usare il stringa di connessione per connettersi allo spazio dei nomi di Griglia di eventi. Per copiare le chiavi di accesso per l'argomento dello spazio dei nomi, seguire questa procedura:

  1. Nella pagina Spazio dei nomi di Griglia di eventi selezionare Argomenti.
  2. Selezionare l'argomento a cui è necessario accedere.
  3. Nella pagina Chiavi di accesso selezionare il pulsante copia accanto a Chiave 1 o Chiave 2 per copiare i tasti di scelta negli Appunti per usarli in un secondo momento. Incollare questo valore nel Blocco note o in un'altra posizione temporanea.

Avviare Visual Studio

È possibile autorizzare l'accesso allo spazio dei nomi di Griglia di eventi seguendo questa procedura:

Avviare Visual Studio. Se viene visualizzata la finestra Attività iniziali , selezionare il collegamento Continua senza codice nel riquadro destro.

Inviare messaggi all'argomento

Questa sezione illustra come creare un'applicazione console .NET per inviare messaggi a un argomento di Griglia di eventi.

Creare un'applicazione console

  1. In Visual Studio selezionare File -Nuovo ->Menu Progetto>.

  2. Nella finestra di dialogo Crea un nuovo progetto seguire questa procedura: se non viene visualizzata questa finestra di dialogo, selezionare File dal menu, selezionare Nuovoe quindi selezionare Progetto.

    1. Selezionare C# come linguaggio di programmazione.

    2. Selezionare Console come tipo di applicazione.

    3. Selezionare App console nell'elenco dei risultati.

    4. Quindi seleziona Avanti.

      Screenshot che mostra la finestra di dialogo Crea un nuovo progetto con C# e Console selezionato.

  3. Immettere EventSender come nome del progetto, EventGridQuickStart per il nome della soluzione e quindi selezionare Avanti.

    Screenshot che mostra i nomi della soluzione e del progetto nella finestra di dialogo Configura il nuovo progetto.

  4. Nella pagina Informazioni aggiuntive selezionare Crea per creare la soluzione e il progetto.

Aggiungere i pacchetti NuGet al progetto

  1. Scegliere Strumenti>Gestione pacchetti NuGet>Console di Gestione pacchetti dal menu.

  2. Eseguire il comando seguente per installare il pacchetto NuGet Azure.Messaging.EventGrid :

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

Aggiungere codice per inviare l'evento all'argomento dello spazio dei nomi

  1. Sostituire il contenuto di Program.cs con il codice seguente. I passaggi importanti sono descritti, con informazioni aggiuntive nei commenti del codice.

    Importante

    Aggiornare i valori segnaposto (<ENDPOINT> , <TOPIC-NAME><TOPIC-ACCESS-KEY>, , <TOPIC-SUBSCRIPTION-NAME>) nel frammento di codice con l'endpoint dell'argomento, il nome dell'argomento, la chiave dell'argomento, il nome della sottoscrizione dell'argomento.

    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. Compilare il progetto e assicurarsi che non siano presenti errori.

  3. Eseguire il programma e attendere il messaggio di conferma.

    Three events have been published to the topic. Press any key to end the application.
    

    Importante

    Nella maggior parte dei casi, la propagazione dell'assegnazione di ruolo in Azure richiederà un minuto o due. In rari casi, possono essere necessari fino a otto minuti. Se si ricevono errori di autenticazione quando si esegue il codice per la prima volta, attendere alcuni istanti e riprovare.

  4. Nel portale di Azure seguire questa procedura:

    1. Passare allo spazio dei nomi di Griglia di eventi.

    2. Nella pagina Panoramica viene visualizzato il numero di eventi pubblicati nello spazio dei nomi nel grafico.

      Screenshot che mostra la pagina Spazio dei nomi di Griglia di eventi nella portale di Azure.

Eseguire il pull dei messaggi dall'argomento

In questa sezione viene creata un'applicazione console .NET che riceve messaggi dall'argomento.

Creare un progetto per ricevere gli eventi CloudEvent pubblicati

  1. Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione EventGridQuickStart, scegliere Aggiungi e selezionare Nuovo progetto.
  2. Selezionare Applicazione console e selezionare Avanti.
  3. Immettere EventReceiver come nome del progetto e selezionare Crea.
  4. Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse su EventReceiver e scegliere Imposta come progetto di avvio.

Aggiungere i pacchetti NuGet al progetto

  1. Scegliere Strumenti>Gestione pacchetti NuGet>Console di Gestione pacchetti dal menu.

  2. Eseguire il comando seguente per installare il pacchetto NuGet Azure.Messaging.EventGrid . Selezionare EventReceiver per il progetto predefinito se non è già impostato.

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

    Screenshot che mostra il progetto EventReceiver selezionato nella console di Gestione pacchetti.

Aggiungere il codice per ricevere eventi dall'argomento

In questa sezione si aggiunge codice per recuperare i messaggi dalla coda.

  1. All'interno della Program classe aggiungere il codice seguente:

    Importante

    Aggiornare i valori segnaposto (<ENDPOINT> , <TOPIC-NAME><TOPIC-ACCESS-KEY>, , <TOPIC-SUBSCRIPTION-NAME>) nel frammento di codice con l'endpoint dell'argomento, il nome dell'argomento, la chiave dell'argomento, il nome della sottoscrizione dell'argomento.

    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. Aggiungere i metodi seguenti alla fine della Program classe .

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

Pulire le risorse

Passare allo spazio dei nomi di Griglia di eventi nella portale di Azure e selezionare Elimina nel portale di Azure per eliminare lo spazio dei nomi di Griglia di eventi e l'argomento in esso contenuti.

Vedere Informazioni di riferimento sulle API .NET.