Guida introduttiva all'invio di messaggi a Hub eventi di Azure in .NET Standard

Nota

Questo esempio è disponibile in GitHub.

Questa esercitazione illustra come scrivere un'applicazione console .NET Core che invii un set di messaggi a un hub eventi. È possibile eseguire la soluzione GitHub così com'è, sostituendo le stringhe EhConnectionString e EhEntityPath con i valori dell'hub eventi. In alternativa, è possibile seguire la procedura illustrata in questa esercitazione per creare una soluzione propria.

Prerequisiti

Per inviare messaggi a un hub eventi, viene scritta un'applicazione console C# in Visual Studio.

Creare uno spazio dei nomi di Hub eventi e un hub eventi

Il primo passaggio consiste nell'usare il portale di Azure per creare uno spazio dei nomi per il tipo Hub eventi e ottenere le credenziali di gestione richieste dall'applicazione per comunicare con l'hub eventi. Per creare uno spazio dei nomi e un hub eventi, seguire la procedura descritta in questo articolo e procedere con i passaggi seguenti.

Creare un'applicazione console

Avviare Visual Studio. Scegliere Nuovo dal menu File e quindi fare clic su Progetto. Creare un'applicazione console di .NET Core.

Nuovo progetto

Aggiungere il pacchetto NuGet di Hub eventi

Aggiungere il pacchetto NuGet della raccolta .NET standard Microsoft.Azure.EventHubs al progetto eseguendo i passaggi descritti di seguito:

  1. Fare clic con il pulsante destro del mouse sul progetto appena creato e scegliere Gestisci pacchetti NuGet.
  2. Fare clic sulla scheda Sfoglia, quindi cercare "Microsoft.Azure.EventHubs" e selezionare il pacchetto Microsoft.Azure.EventHubs. Fare clic su Installa per completare l'installazione, quindi chiudere questa finestra di dialogo.

Scrivere il codice per inviare messaggi all'hub eventi

  1. Aggiungere le istruzioni using seguenti all'inizio del file Program.cs.

    using Microsoft.Azure.EventHubs;
    using System.Text;
    using System.Threading.Tasks;
    
  2. Aggiungere le costanti per la classe Program per la stringa di connessione e il percorso dell'entità di Hub eventi (nome dell'hub eventi singolo). Sostituire i segnaposto tra parentesi con i valori specifici ottenuti durante la creazione dell'hub eventi.

    private static EventHubClient eventHubClient;
    private const string EhConnectionString = "{Event Hubs connection string}";
    private const string EhEntityPath = "{Event Hub path/name}";
    
  3. Aggiungere alla classe Program un nuovo metodo denominato MainAsync come da esempio seguente:

    private static async Task MainAsync(string[] args)
    {
        // Creates an EventHubsConnectionStringBuilder object from the connection string, and sets the EntityPath.
        // Typically, the connection string should have the entity path in it, but for the sake of this simple scenario
        // we are using the connection string from the namespace.
        var connectionStringBuilder = new EventHubsConnectionStringBuilder(EhConnectionString)
        {
            EntityPath = EhEntityPath
        };
    
        eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
    
        await SendMessagesToEventHub(100);
    
        await eventHubClient.CloseAsync();
    
        Console.WriteLine("Press ENTER to exit.");
        Console.ReadLine();
    }
    
  4. Aggiungere alla classe Program un nuovo metodo denominato SendMessagesToEventHub come da esempio seguente:

    // Creates an event hub client and sends 100 messages to the event hub.
    private static async Task SendMessagesToEventHub(int numMessagesToSend)
    {
        for (var i = 0; i < numMessagesToSend; i++)
        {
            try
            {
                var message = $"Message {i}";
                Console.WriteLine($"Sending message: {message}");
                await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(message)));
            }
            catch (Exception exception)
            {
                Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
            }
    
            await Task.Delay(10);
        }
    
        Console.WriteLine($"{numMessagesToSend} messages sent.");
    }
    
  5. Aggiungere il codice seguente al metodo Main nella classe Program.

    MainAsync(args).GetAwaiter().GetResult();
    

    Ecco l'aspetto che avrà il file Program.cs.

    namespace SampleSender
    {
        using System;
        using System.Text;
        using System.Threading.Tasks;
        using Microsoft.Azure.EventHubs;
    
        public class Program
        {
            private static EventHubClient eventHubClient;
            private const string EhConnectionString = "{Event Hubs connection string}";
            private const string EhEntityPath = "{Event Hub path/name}";
    
            public static void Main(string[] args)
            {
                MainAsync(args).GetAwaiter().GetResult();
            }
    
            private static async Task MainAsync(string[] args)
            {
                // Creates an EventHubsConnectionStringBuilder object from the connection string, and sets the EntityPath.
                // Typically, the connection string should have the entity path in it, but for the sake of this simple scenario
                // we are using the connection string from the namespace.
                var connectionStringBuilder = new EventHubsConnectionStringBuilder(EhConnectionString)
                {
                    EntityPath = EhEntityPath
                };
    
                eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
    
                await SendMessagesToEventHub(100);
    
                await eventHubClient.CloseAsync();
    
                Console.WriteLine("Press ENTER to exit.");
                Console.ReadLine();
            }
    
            // Creates an event hub client and sends 100 messages to the event hub.
            private static async Task SendMessagesToEventHub(int numMessagesToSend)
            {
                for (var i = 0; i < numMessagesToSend; i++)
                {
                    try
                    {
                        var message = $"Message {i}";
                        Console.WriteLine($"Sending message: {message}");
                        await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(message)));
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
                    }
    
                    await Task.Delay(10);
                }
    
                Console.WriteLine($"{numMessagesToSend} messages sent.");
            }
        }
    }
    
  6. Eseguire il programma e assicurarsi che non siano presenti errori.

Congratulazioni. Sono stati inviati messaggi a un hub eventi.

Passaggi successivi

Per ulteriori informazioni su Hub eventi visitare i collegamenti seguenti: