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:
- Creare uno spazio dei nomi di Griglia di eventi usando il portale di Azure.
- Creare un argomento dello spazio dei nomi di Griglia di eventi usando il 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 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:
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 nei 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 creare un gruppo di risorse.
Immettere un nome per lo spazio dei nomi.
Selezionare l'area o la località 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 completata selezionare Vai alla risorsa per passare allo spazio dei nomi.
Creare un argomento dello spazio dei nomi
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.
Nella pagina Spazio dei nomi griglia di eventi selezionare l'opzione Argomenti nella sezione Eventi nel menu a sinistra.
Nella pagina Argomenti selezionare il pulsante + Argomento sulla 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 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.
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.
Nella pagina Sottoscrizioni selezionare il pulsante "+ Sottoscrizione" sulla barra dei comandi.
Nella scheda Informazioni di base digitare il nome dell'argomento da creare e quindi 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 degli attributi 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 recapito, 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 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:
- 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
È 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
In Visual Studio selezionare File -Nuovo ->Menu 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 dei risultati.
Quindi seleziona Avanti.
Immettere EventSender come 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 -version 4.22.0-beta.1
Aggiungere codice per inviare l'evento all'argomento dello spazio dei nomi
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; } }
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à 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.
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 Aggiungi e selezionare Nuovo progetto.
- Selezionare Applicazione console e selezionare Avanti.
- Immettere EventReceiver come nome del 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 il progetto predefinito se non è già impostato.
Install-Package Azure.Messaging.EventGrid -version 4.22.0-beta.1
Aggiungere il codice per ricevere eventi dall'argomento
In questa sezione si aggiunge codice per recuperare i messaggi dalla coda.
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("-----------------");
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.
Argomenti correlati
Vedere Informazioni di riferimento sulle API .NET.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per