Sending Events to Azure Event Hubs

This guide will walk you through the process of sending events to an Azure Event Hub using various SDKs. Event Hubs is a highly scalable data streaming platform and event ingestion service. It can be used for real-time analytics, batch processing, and event-driven applications.

Prerequisites

Sending Events using the .NET SDK

The Azure Event Hubs SDK for .NET provides a straightforward way to send events.

Note: Ensure you have the Azure.Messaging.EventHubs NuGet package installed.
C#
using Azure.Messaging.EventHubs;
using Azure.Messaging.EventHubs.Producer;
using System;
using System.Text;
using System.Threading.Tasks;

string eventHubConnectionString = "";
string eventHubName = "";

await using var producer = new EventHubProducerClient(eventHubConnectionString, eventHubName);

try
{
    using EventDataBatch eventBatch = await producer.CreateBatchAsync();

    for (int i = 0; i < 5; i++)
    {
        string message = $"Event {i}: Hello Azure Event Hubs!";
        if (!eventBatch.TryAddMessage(new EventData(Encoding.UTF8.GetBytes(message))))
        {
            throw new Exception($"The event {i} is too large for the batch and cannot be sent.");
        }
    }

    await producer.SendAsync(eventBatch);
    Console.WriteLine("Successfully sent events to Event Hub.");
}
catch (Exception ex)
{
    Console.WriteLine($"Error sending events: {ex.Message}");
}
finally
{
    await producer.DisposeAsync();
}
            

Sending Events using the Python SDK

The Azure Event Hubs SDK for Python makes it easy to publish events.

Note: Install the SDK using: pip install azure-eventhubsproducer
Python
import asyncio
from azure.eventhub.producer import EventHubProducer

event_hubs_connstr = ""
event_hub_path = ""

async def send_events():
    producer = EventHubProducer(event_hubs_connstr, event_hub_path)
    
    async with producer:
        try:
            async with producer.create_batch() as batch:
                for i in range(5):
                    message = f"Event {i}: Hello Azure Event Hubs!"
                    try:
                        await batch.add_event(message)
                    except Exception as e:
                        print(f"Event {i} too large for batch: {e}")
                        break
                await producer.send(batch)
            print("Successfully sent events to Event Hub.")
        except Exception as e:
            print(f"Error sending events: {e}")

if __name__ == "__main__":
    asyncio.run(send_events())
            

Sending Events using the JavaScript (Node.js) SDK

This section covers sending events from a Node.js application.

Note: Install the package: npm install @azure/event-hubs
JavaScript
const { EventHubProducerClient } = require("@azure/event-hubs");

const connectionString = "";
const eventHubName = "";

async function main() {
    const producer = new EventHubProducerClient(connectionString, eventHubName);

    try {
        const batch = await producer.createBatch();
        for (let i = 0; i < 5; i++) {
            const message = `Event ${i}: Hello Azure Event Hubs!`;
            if (!batch.tryAdd({ body: message })) {
                console.log("Event is too large for the batch.");
                break;
            }
        }
        await producer.send(batch);
        console.log("Successfully sent events to Event Hub.");
    } catch (err) {
        console.error("Error sending events:", err);
    } finally {
        await producer.close();
    }
}

main().catch(error => {
    console.error("An unexpected error occurred:", error);
});
            

Key Considerations

Congratulations! You have successfully learned how to send events to Azure Event Hubs. Proceed to the next section to learn how to receive these events.