Azure Event Hubs Documentation

Sending Events to Azure Event Hubs

This tutorial will guide you through the process of sending events to an Azure Event Hub using a simple C# application. We'll cover setting up your Event Hub, obtaining connection details, and writing the code to publish messages.

Prerequisites

1. Get Connection String

You'll need the connection string for your Event Hubs namespace. Navigate to your Event Hubs namespace in the Azure portal, select "Shared access policies" under "Settings", and copy the primary connection string from the "RootManageSharedAccessKey" policy.

Azure Portal Connection String

Security Note: In production environments, consider using Azure Key Vault to store and manage your connection strings securely instead of hardcoding them.

2. Create a New C# Console Application

Open your terminal or command prompt and create a new .NET console application:

dotnet new console -n EventHubsSender

Navigate into the newly created project directory:

cd EventHubsSender

3. Add the Azure Event Hubs SDK NuGet Package

Add the necessary NuGet package for interacting with Azure Event Hubs:

dotnet add package Azure.Messaging.EventHubs

4. Write the Sender Code

Open the Program.cs file and replace its contents with the following C# code. Make sure to replace "YOUR_EVENTHUB_CONNECTION_STRING" and "YOUR_EVENTHUB_NAME" with your actual values.

// Using statements
using System;
using System.Text;
using System.Threading.Tasks;
using Azure.Messaging.EventHubs;
using Azure.Messaging.EventHubs.Producer;

class Program
{
    // The Event Hubs connection string.
    private const string connectionString = "YOUR_EVENTHUB_CONNECTION_STRING";
    // The name of the Event Hub.
    private const string eventHubName = "YOUR_EVENTHUB_NAME";

    static async Task Main(string[] args)
    {
        // The producer client to send events to the Event Hub.
        await using var producer = new EventHubProducerClient(connectionString, eventHubName);

        Console.WriteLine("Sending events to Event Hub...");

        // Create a batch of events.
        using EventDataBatch eventBatch = await producer.CreateBatchAsync();

        for (int i = 1; i <= 5; i++)
        {
            var eventData = new EventData(Encoding.UTF8.GetBytes($"Event {i}: This is a sample message."));

            // Try adding the event to the batch.
            if (!eventBatch.TryAdd(eventData))
            {
                // If the batch is full, send it and create a new one.
                throw new Exception($"The event {i} is too large for the batch and cannot be sent.");
            }
        }

        try
        {
            // Send the batch of events to the Event Hub.
            await producer.SendAsync(eventBatch);
            Console.WriteLine($"Successfully sent 5 events to the Event Hub: {eventHubName}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error sending events: {ex.Message}");
        }

        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

Tip: For more complex scenarios, you can send events one by one using producer.SendAsync(singleEventData), but batching is generally more efficient.

5. Run the Application

Save the Program.cs file and run the application from your terminal:

dotnet run

If successful, you will see output similar to:

Sending events to Event Hub...
Successfully sent 5 events to the Event Hub: YOUR_EVENTHUB_NAME
Press any key to exit.

6. Verify Events (Optional)

You can verify that your events have been sent by checking your Event Hub's metrics in the Azure portal or by setting up a consumer application (covered in the next tutorial).

Congratulations! You have successfully sent events to Azure Event Hubs.