Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
using System;
using System.IO;
using System.Linq;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
[assembly: FunctionsStartup(typeof(Zohan.KafkaDemo.Startup))]
namespace Zohan.KafkaDemo
public class Startup : FunctionsStartup
public override void Configure(IFunctionsHostBuilder builder)
// Retrieve the Event Hubs connection string that will allow us
// to send events.
var eventHubConnectionString = Environment.GetEnvironmentVariable("EventHubConnectionString");
// Retrieve the Event Hubs fully qualified domain name along
// with the port number.
// Example: {event-hub-namespace}
var eventHubFqdn = Environment.GetEnvironmentVariable("EventHubFqdn");
// Retrieve the certificate file location. This is required
// for client-broker encryption with Event Hubs.
var caCertFileLocation = GetCaCertFileLocation();
// Add a singleton instance of the kafka producer class.
builder.Services.AddSingleton<IKafkaProducer>(new KafkaProducer(eventHubFqdn, eventHubConnectionString, caCertFileLocation));
private string GetCaCertFileLocation()
// For local testing
if (Environment.GetEnvironmentVariable("IsLocal") == "1")
return "cacert.pem";
// When the certificate file is copied to the output directory
// of the Azure Function, it will reside in the site/wwwroot
// folder.
string home = Environment.GetEnvironmentVariable("HOME");
string path = Path.Combine(home, "site", "wwwroot");
return Path.Combine(path, "cacert.pem");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment