Guida introduttiva: Inviare e ricevere messaggi da un argomento dello spazio dei nomi di Griglia di eventi di Azure (.NET)
In questo avvio rapido si eseguono le operazioni seguenti:
- Creazione di uno spazio dei nomi di Griglia di eventi nel portale di Azure.
- Creazione di un argomento dello spazio dei nomi di Griglia di eventi nel portale di Azure.
- Creare una sottoscrizione di eventi usando il portale di Azure.
- Scrivere un'applicazione console .NET per inviare un set di messaggi all'argomento
- 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 Libreria client di Griglia di eventi di Azure per .NET. Per altri esempi, vedere Esempi di Griglia di eventi .NET in GitHub.
Prerequisiti
Se non si ha familiarità con il servizio, vedere Panoramica di Griglia di eventi prima di seguire questa guida introduttiva.
- Sottoscrizione di Azure. Per usare i servizi di Azure, tra cui 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 la compilazione di progetti in 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 di 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 di Griglia di eventi di Azure.
Per creare uno spazio dei nomi:
Accedere al portale di Azure.
Nella casella di ricerca immettere Spazi dei nomi di Griglia di eventi e selezionare Spazi dei nomi di Griglia di eventi dai risultati.
Nella pagina Spazi dei nomi di Griglia di eventi, selezionare + Crea sulla barra degli strumenti.
Nella pagina Informazioni di base seguire questa procedura.
Selezionare la sottoscrizione di Azure in cui creare lo spazio dei nomi.
Selezionare un gruppo di risorse esistente o crearne uno.
Immettere un nome per lo spazio dei nomi.
Selezionare l'area o l'ubicazione in cui si vuole creare lo spazio dei nomi.
Selezionare Rivedi e crea nella parte inferiore della pagina.
Nella scheda Rivedi e crea esaminare le impostazioni e selezionare Crea.
Nella pagina Distribuzione riuscita selezionare Vai alla risorsa per passare allo spazio dei nomi.
Creare un argomento dello spazio dei nomi
Se non ci si trova nella pagina Spazio dei nomi di Griglia di eventi, seguire la procedura Creare, visualizzare e gestire gli spazi dei nomi per visualizzare lo spazio dei nomi da usare per creare l'argomento.
Nella pagina griglia di eventi Namespace selezionare l'opzione Argomenti nella sezione Gestore eventi nel menu a sinistra.
Nella pagina Argomenti selezionare + Argomento nella barra dei comandi.
Nella pagina Crea argomento digitare il nome dell'argomento da creare e selezionare Crea.
Creare una sottoscrizione di eventi
Se si è nella pagina Argomenti dello spazio dei nomi di Griglia di eventi nel portale di Azure, selezionare l'argomento nell'elenco degli argomenti. Se ci si trova nella pagina Argomenti, seguire le istruzioni in creare, visualizzare e gestire gli argomenti di uno spazio dei nomi per identificare l'argomento da usare per creare la sottoscrizione di eventi.
Nella pagina Argomento dello spazio dei nomi di Griglia di eventi selezionare Sottoscrizioni nella sezione Entità nel menu a sinistra.
Nella pagina Sottoscrizioni selezionare il pulsante "+ Sottoscrizione" nella barra dei comandi.
Nella scheda Informazioni di base seguire questa procedura:
Immettere un nome per la sottoscrizione da creare
Verificare che lo schema di recapito sia impostato su Eventi cloud v1.0.
Verificare che la modalità di recapito sia impostata su Coda (modalità pull).
Selezionare Avanti: Filtri nella parte inferiore della pagina.
Nella scheda Filtri aggiungere i nomi dei tipi di evento da filtrare nella sottoscrizione e aggiungere i filtri di attributo di contesto da usare nella sottoscrizione. Selezionare quindi Avanti: Funzionalità aggiuntive nella parte inferiore della pagina.
Nella scheda Funzionalità aggiuntive è possibile specificare la conservazione degli eventi, il numero massimo di recapiti, la durata del blocco e le impostazioni di messaggi non recapitabili.
Selezionare Crea per creare la sottoscrizione di eventi.
Autenticare l'app in Azure
Questa guida introduttiva illustra come connettersi a Griglia di eventi di Azure: stringa di connessione. Questa sezione illustra come usare una stringa di connessione per connettersi a uno spazio dei nomi di Griglia di eventi. Se non si ha familiarità con Azure, l'opzione della 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 concedono rispettivamente il controllo completo su tutti gli aspetti dello spazio dei nomi o degli argomenti. Un client può usare la 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:
Nella pagina Spazio dei nomi di Griglia di eventi selezionare Argomenti.
Selezionare l'argomento a cui è necessario accedere.
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
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 Griglia di eventi.
Creare un'applicazione console
In Visual Studio selezionare il menu File ->Nuovo ->Progetto.
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.
Selezionare C# come linguaggio di programmazione.
Selezionare Console come tipo di applicazione.
Selezionare App console nell'elenco risultati.
Quindi seleziona Avanti.
Immettere EventSender per il nome del progetto, EventGridQuickStart per il nome della soluzione e quindi selezionare Avanti.
Nella pagina Informazioni aggiuntive selezionare Crea per creare la soluzione e il progetto.
Aggiungere i pacchetti NuGet al progetto
Scegliere Strumenti>Gestione pacchetti NuGet>Console di Gestione pacchetti dal menu.
Eseguire il comando seguente per installare il pacchetto NuGet Azure.Messaging.EventGrid:
Install-Package Azure.Messaging.EventGrid.Namespaces
Aggiungere codice per inviare l'evento all'argomento dello spazio dei nomi
Sostituire il contenuto di
Program.cs
con il codice seguente. Sono descritti i passaggi importanti, con informazioni aggiuntive nei commenti del codice.Importante
Aggiornare i valori segnaposto (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
,<TOPIC-SUBSCRIPTION-NAME>
) nel frammento di codice con l'endpoint dello spazio dei nomi, il nome dell'argomento e la chiave dell'argomento.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; } }
Compilare il progetto e assicurarsi che non siano presenti errori.
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à almeno due minuti. 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.
Nel portale di Azure seguire questa procedura:
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
- Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione EventGridQuickStart, scegliere Aggiunti e selezionare Nuovo progetto.
- Selezionare Applicazione console e selezionare Avanti.
- Immettere EventReceiver per Nome progetto e selezionare Crea.
- 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
Scegliere Strumenti>Gestione pacchetti NuGet>Console di Gestione pacchetti dal menu.
Eseguire il comando seguente per installare il pacchetto NuGet Azure.Messaging.EventGrid. Selezionare EventReceiver per Progetto predefinito se non è già impostato.
Install-Package Azure.Messaging.EventGrid.Namespaces
Aggiungere il codice per ricevere eventi dall'argomento
In questa sezione si aggiunge il codice per recuperare i messaggi dalla coda.
Nella classe
Program
aggiungere il codice:Importante
Aggiornare i valori segnaposto (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
,<TOPIC-SUBSCRIPTION-NAME>
) nel frammento di codice con l'endpoint dello spazio dei nomi, il nome dell'argomento, la chiave dell'argomento e il nome della sottoscrizione dell'argomento.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("-----------------");
Aggiungere i metodi seguenti alla fine della classe
Program
.// 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; } }
Nella finestra Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto EventReceiver e scegliere Imposta come progetto di avvio.
Compilare il progetto e assicurarsi che non siano presenti errori.
Eseguire l'applicazione EventReceiver e confermare che i tre eventi vengono visualizzati nella finestra di output.
Pulire le risorse
Passare allo spazio dei nomi di Griglia di eventi nel 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.
Argomenti correlati
Vedere Riferimento API .NET.