{"id":13686256,"url":"https://github.com/LGouellec/streamiz","last_synced_at":"2025-05-01T09:30:49.216Z","repository":{"id":37100770,"uuid":"231591212","full_name":"LGouellec/streamiz","owner":"LGouellec","description":".NET Stream Processing Library for Apache Kafka 🚀","archived":false,"fork":false,"pushed_at":"2025-03-21T22:30:45.000Z","size":12999,"stargazers_count":495,"open_issues_count":29,"forks_count":79,"subscribers_count":29,"default_branch":"develop","last_synced_at":"2025-04-30T21:32:52.564Z","etag":null,"topics":["event-streaming","kafka","kafka-streams","kafka-streams-dotnet","kafka-streams-net","streamiz"],"latest_commit_sha":null,"homepage":"https://lgouellec.github.io/streamiz/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LGouellec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"LGouellec","custom":"https://www.paypal.me/slegouellec"}},"created_at":"2020-01-03T13:07:44.000Z","updated_at":"2025-04-27T10:36:43.000Z","dependencies_parsed_at":"2024-06-03T23:56:43.660Z","dependency_job_id":"28d202ac-e6be-4a78-a463-b244f3bab6e4","html_url":"https://github.com/LGouellec/streamiz","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LGouellec%2Fstreamiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LGouellec%2Fstreamiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LGouellec%2Fstreamiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LGouellec%2Fstreamiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LGouellec","download_url":"https://codeload.github.com/LGouellec/streamiz/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251788443,"owners_count":21644065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["event-streaming","kafka","kafka-streams","kafka-streams-dotnet","kafka-streams-net","streamiz"],"created_at":"2024-08-02T15:00:26.031Z","updated_at":"2025-05-01T09:30:49.209Z","avatar_url":"https://github.com/LGouellec.png","language":"C#","funding_links":["https://github.com/sponsors/LGouellec","https://www.paypal.me/slegouellec"],"categories":["Libraries","Table of Contents","Queue","Identifiers"],"sub_categories":["Streaming Library","GUI - other"],"readme":"# .NET Stream Processing Library for Apache Kafka \u003csup\u003eTM\u003c/sup\u003e \u0026middot; [![GitHub license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/LGouellec/streamiz/blob/master/LICENSE) \u0026middot; [![Join the chat at https://discord.gg/J7Jtxum](https://img.shields.io/discord/704268523169382421.svg?logoColor=white)](https://discord.gg/J7Jtxum) ![build](https://github.com/LGouellec/streamiz/workflows/build/badge.svg?branch=master)\n\n| Package  | Nuget version  | Downloads |\n|---|---|---|\n| Streamiz.Kafka.Net   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net) |\n| Streamiz.Kafka.Net.SchemaRegistry.SerDes   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.SchemaRegistry.SerDes)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.SchemaRegistry.SerDes) |\n| Streamiz.Kafka.Net.SchemaRegistry.SerDes.Avro  | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.SchemaRegistry.SerDes.Avro)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.SchemaRegistry.SerDes.Avro) |\n| Streamiz.Kafka.Net.SchemaRegistry.SerDes.Protobuf   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.SchemaRegistry.SerDes.Protobuf)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.SchemaRegistry.SerDes.Protobuf) |\n| Streamiz.Kafka.Net.SchemaRegistry.SerDes.Json   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.SchemaRegistry.SerDes.Json) | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.SchemaRegistry.SerDes.Json) |\n| Streamiz.Kafka.Net.Metrics.Prometheus   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.Metrics.Prometheus)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.Metrics.Prometheus) |\n| Streamiz.Kafka.Net.Metrics.OpenTelemetry   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.Metrics.OpenTelemetry)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.Metrics.OpenTelemetry) |\n| Streamiz.Kafka.Net.Azure.RemoteStorage   | ![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/Streamiz.Kafka.Net.Azure.RemoteStorage)  | ![Nuget](https://img.shields.io/nuget/dt/Streamiz.Kafka.Net.Azure.RemoteStorage) |\n\n## Quality Statistics\n\n[![Sonar Cloud Quality Gate](https://sonarcloud.io/api/project_badges/measure?branch=master\u0026project=LGouellec_kafka-streams-dotnet\u0026metric=alert_status)](https://sonarcloud.io/dashboard?branch=master\u0026id=LGouellec_kafka-streams-dotnet)\n[![Sonar Cloud Quality Gate](https://sonarcloud.io/api/project_badges/measure?branch=master\u0026project=LGouellec_kafka-streams-dotnet\u0026metric=coverage)](https://sonarcloud.io/dashboard?branch=master\u0026id=LGouellec_kafka-streams-dotnet)\n[![Sonar Cloud Reliability Rate](https://sonarcloud.io/api/project_badges/measure?branch=master\u0026project=LGouellec_kafka-streams-dotnet\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?branch=master\u0026id=LGouellec_kafka-streams-dotnet)\n[![Sonar Cloud Security Rate](https://sonarcloud.io/api/project_badges/measure?branch=master\u0026project=LGouellec_kafka-streams-dotnet\u0026metric=security_rating)](https://sonarcloud.io/dashboard?branch=master\u0026id=LGouellec_kafka-streams-dotnet)\n[![Sonar Cloud Maintainability Rate](https://sonarcloud.io/api/project_badges/measure?branch=master\u0026project=LGouellec_kafka-streams-dotnet\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?branch=master\u0026id=LGouellec_kafka-streams-dotnet)\n[![Sonar Cloud Duplicated Code](https://sonarcloud.io/api/project_badges/measure?branch=master\u0026project=LGouellec_kafka-streams-dotnet\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?branch=master\u0026id=LGouellec_kafka-streams-dotnet)\n\n\u003cimg src=\"./resources/logo-kafka-stream-net.png\" width=\"150\"\u003e\n\n----\n\nStreamiz Kafka .NET is .NET stream processing library for Apache Kafka. \n\n```\nKAFKA is a registered trademark of The Apache Software Foundation and\nhas been licensed for use by Streamiz. Streamiz has no\naffiliation with and is not endorsed by The Apache Software Foundation.\n```\n\n# Try it with Gitpod\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/LGouellec/streamiz)\n\n## Step 1\n\nWaiting 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)\"`\n\n## Step 2\n\nSwitch to `producer` terminal and send sentences or word. The sample case is \"Count the number words\".\n\n## Step 3\n\nSwitch to `consumer`terminal and check aggregation result\n\n\n# Documentation\n\nRead the full documentation on https://lgouellec.github.io/streamiz/\n\n# Installation\n\nNuget packages are listed to [nuget.org](https://www.nuget.org/packages/Streamiz.Kafka.Net/)\n\nInstall the last version with :\n```shell\ndotnet add package Streamiz.Kafka.Net\n```\n\n# Usage\n\nThere, a sample streamiz application :\n\n``` csharp\nstatic async System.Threading.Tasks.Task Main(string[] args)\n{ \n    var config = new StreamConfig\u003cStringSerDes, StringSerDes\u003e();\n    config.ApplicationId = \"test-app\";\n    config.BootstrapServers = \"localhost:9092\";\n    \n    StreamBuilder builder = new StreamBuilder();\n\n    var kstream = builder.Stream\u003cstring, string\u003e(\"stream\");\n    var ktable = builder.Table(\"table\", InMemory.As\u003cstring, string\u003e(\"table-store\"));\n\n    kstream.Join(ktable, (v, v1) =\u003e $\"{v}-{v1}\")\n           .To(\"join-topic\");\n\n    Topology t = builder.Build();\n    KafkaStream stream = new KafkaStream(t, config);\n\n    Console.CancelKeyPress += (o, e) =\u003e {\n        stream.Dispose();\n    };\n\n    await stream.StartAsync();\n}\n```\n\n# Compare Kafka Streams vs Streamiz\n\n|                        **_Features_**                        | **Kafka Streams supported**        | **Streamiz supported** |                 **Comment**                |\n|:------------------------------------------------------------:|:----------------------------------:|:----------------------:|:------------------------------------------:|\n| Stateless processors                                         |              X                     |         X              |                                            |\n| RocksDb store                                                |              X                     |         X              |                                            |\n| Standby replicas                                             |              X                     |                        |    No plan for now                         |\n| InMemory store                                               |              X                     |         X              |                                            |\n| Transformer, Processor API                                   |              X                     |         X              |                                            |\n| Punctuate                                                    |              X                     |         X              |                                            |\n| KStream-KStream Join                                         |              X                     |         X              |                                            |\n| KTable-KTable Join                                           |              X                     |         X              |                                            |\n| KTable-KTable FK Join                                        |              X                     |                        | Plan for 1.8.0                             |\n| KStream-KTable Join                                          |              X                     |         X              |                                            |\n| KStream-GlobalKTable Join                                    |              X                     |         X              |                                            |\n| External Async Processing                                    |                                    |         X              | V2 in coming                               |\n| Hopping window                                               |              X                     |         X              |                                            |\n| Tumbling window                                              |              X                     |         X              |                                            |\n| Sliding window                                               |              X                     |                        | No plan for now                            |\n| Session window                                               |              X                     |                        | No plan for now                            |\n| Cache                                                        |              X                     |         X              |                                            |\n| Suppress(..)                                                 |              X                     |         X              |                                            |\n| Interactive Queries                                          |              X                     |                        | No plan for now                            |\n| State store batch restoring                                  |              X                     |                        | Plan for 1.8.0                             |\n| Exactly Once                                                 |              X                     |         X              |                                            |\n| Remote storage (Azure, GCP, Aws)                             |                                    |         X              | Azure Preview, GCP and AWS coming          |\n\n# Community Support\n\nFeel free to reach out to our community support [here](https://discord.gg/J7Jtxum) anytime; we're here to help you with any questions or issues you may have! \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLGouellec%2Fstreamiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLGouellec%2Fstreamiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLGouellec%2Fstreamiz/lists"}