Skip to main content

Dekaf

Taking the Java out of Kafka

A high-performance, pure C# Apache Kafka client for .NET 10+.
No JVM, no interop, no native dependencies.

Pure C#

No native DLLs to ship. No interop overhead. Just C# all the way down, from the wire protocol to the API you call. Runs anywhere .NET runs.

Zero-Allocation Hot Paths

We obsess over allocations so you don't have to. Span<T>,ref struct, and buffer pooling keep GC pressure out of your critical paths.

Modern .NET

Built for .NET 10+ with all the good stuff: nullable reference types,IAsyncEnumerable, ValueTask, and patterns you're already using.

Simple API

Fluent builders that guide you to valid configurations. Presets for common scenarios. You'll be productive in minutes, not hours.

Full Kafka Support

Transactions, idempotent producers, consumer groups, exactly-once semantics, all compression codecs—everything you'd expect.

Pluggable

Bring your own serializers, compression codecs, or Schema Registry. Use what makes sense for your project.

Quick Example

Producer

await using var producer = Dekaf
    .CreateProducer<string, string>()
    .WithBootstrapServers("localhost:9092")
    .ForReliability()
    .Build();

var metadata = await producer.ProduceAsync(
    "orders",
    orderId,
    orderJson
);

Console.WriteLine($"Sent to partition {metadata.Partition}");

Consumer

await using var consumer = Dekaf
    .CreateConsumer<string, string>()
    .WithBootstrapServers("localhost:9092")
    .WithGroupId("order-processor")
    .SubscribeTo("orders")
    .Build();

await foreach (var msg in consumer.ConsumeAsync(ct))
{
    await ProcessOrderAsync(msg.Value);
}