Awesome
.NET Stream Processing Library for Apache Kafka <sup>TM</sup> · ·
Package | Nuget version | Downloads |
---|---|---|
Streamiz.Kafka.Net | ||
Streamiz.Kafka.Net.SchemaRegistry.SerDes | ||
Streamiz.Kafka.Net.SchemaRegistry.SerDes.Avro | ||
Streamiz.Kafka.Net.SchemaRegistry.SerDes.Protobuf | ||
Streamiz.Kafka.Net.SchemaRegistry.SerDes.Json | ||
Streamiz.Kafka.Net.Metrics.Prometheus | ||
Streamiz.Kafka.Net.Metrics.OpenTelemetry |
Quality Statistics
Project Statistics
<div> <img alt="GitHub issues" src="https://img.shields.io/github/issues/LGouellec/kafka-streams-dotnet"> <img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/LGouellec/kafka-streams-dotnet"> </div> <br/> <img src="./resources/logo-kafka-stream-net.png" width="150">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
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 consumer
terminal and check aggregation result
Documentation
Read the full documentation on https://lgouellec.github.io/kafka-streams-dotnet/
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 | No plan for now | |
Interactive Queries | X | No plan for now | |
State store batch restoring | X | No plan for now | |
Exactly Once (v1 and v2) | X | X | EOS V1 supported, EOS V2 not supported yet |
Contributing
Maintainers:
Streamiz Kafka .Net is a community project. We invite your participation through issues and pull requests! You can peruse the contributing guidelines.
When adding or changing a service please add tests and documentations.
Support
You can found support here