LGouellec / streamiz

.NET Stream Processing Library for Apache Kafka 🚀
https://lgouellec.github.io/streamiz/
MIT License
470 stars 75 forks source link
event-streaming kafka kafka-streams kafka-streams-dotnet kafka-streams-net streamiz

[!IMPORTANT] We’re excited to hear from you and would love to get your feedback on the product. Your insights are invaluable and will help us shape the future of our product to better meet your needs. The survey will only take a few minutes, and your responses will be completely confidential.

.NET Stream Processing Library for Apache Kafka TM · GitHub license · Join the chat at https://discord.gg/J7Jtxum build

Package Nuget version Downloads
Streamiz.Kafka.Net Nuget (with prereleases) Nuget
Streamiz.Kafka.Net.SchemaRegistry.SerDes Nuget (with prereleases) Nuget
Streamiz.Kafka.Net.SchemaRegistry.SerDes.Avro Nuget (with prereleases) Nuget
Streamiz.Kafka.Net.SchemaRegistry.SerDes.Protobuf Nuget (with prereleases) Nuget
Streamiz.Kafka.Net.SchemaRegistry.SerDes.Json Nuget (with prereleases) Nuget
Streamiz.Kafka.Net.Metrics.Prometheus Nuget (with prereleases) Nuget
Streamiz.Kafka.Net.Metrics.OpenTelemetry Nuget (with prereleases) Nuget

Quality Statistics

Sonar Cloud Quality Gate Sonar Cloud Quality Gate Sonar Cloud Reliability Rate Sonar Cloud Security Rate Sonar Cloud Maintainability Rate Sonar Cloud Duplicated Code


Streamiz Kafka .NET is .NET stream processing library for Apache Kafka.

KAFKA is a registered trademark of The Apache Software Foundation and
has been licensed for use by Streamiz. Streamiz has no
affiliation with and is not endorsed by The Apache Software Foundation.

Try it with Gitpod

Open in Gitpod

Step 1

Waiting run task is complete. The task is consider complete some seconds after viewing this message "🚀 Enjoy Streamiz the .NET Stream processing library for Apache Kafka (TM)"

Step 2

Switch to producer terminal and send sentences or word. The sample case is "Count the number words" similar to here

Step 3

Switch to consumerterminal and check aggregation result

Documentation

Read the full documentation on https://lgouellec.github.io/streamiz/

Installation

Nuget packages are listed to nuget.org

Install the last version with :

dotnet add package Streamiz.Kafka.Net

Usage

There, a sample streamiz application :

static async System.Threading.Tasks.Task Main(string[] args)
{ 
    var config = new StreamConfig<StringSerDes, StringSerDes>();
    config.ApplicationId = "test-app";
    config.BootstrapServers = "localhost:9092";

    StreamBuilder builder = new StreamBuilder();

    var kstream = builder.Stream<string, string>("stream");
    var ktable = builder.Table("table", InMemory.As<string, string>("table-store"));

    kstream.Join(ktable, (v, v1) => $"{v}-{v1}")
           .To("join-topic");

    Topology t = builder.Build();
    KafkaStream stream = new KafkaStream(t, config);

    Console.CancelKeyPress += (o, e) => {
        stream.Dispose();
    };

    await stream.StartAsync();
}

Compare Kafka Streams vs Streamiz

Features Kafka Streams (JAVA) supported Streamiz supported Comment
Stateless processors X X
RocksDb store X X
Standby replicas X No plan for now
InMemory store X X
Transformer, Processor API X X
Punctuate X X
KStream-KStream Join X X
KTable-KTable Join X X
KTable-KTable FK Join X Plan for future
KStream-KTable Join X X
KStream-GlobalKTable Join X X
KStream Async Processing (external call inside the topology) X Not supported in Kafka Streams JAVA
Hopping window X X
Tumbling window X X
Sliding window X No plan for now
Session window X No plan for now
Cache X X EA 1.6.0
Suppress(..) X X Plan for 1.7.0
Interactive Queries X No plan for now
State store batch restoring X No plan for now
Exactly Once v2 X X

Community Support

Feel free to reach out to our community support here anytime; we're here to help you with any questions or issues you may have!