Git Product home page Git Product logo

kafka-streams-dotnet's Introduction

.NET Stream Processing Library for Apache Kafka TMGitHub licenseJoin the chat at https://discord.gg/J7Jtxum build Nuget Nuget (with prereleases)

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

Project Statistics

GitHub issues GitHub pull requests


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

It's allowed to develop .NET applications that transform input Kafka topics into output Kafka topics. It's supported .NET Standard 2.1.

So this library can be used by >= .NET Core 3.0 and/or .NET 5.0 applications.

It's a rewriting inspired by Kafka Streams. Finally it will provide the same functionality as Kafka Streams.

This project is being written. Thanks for you contribution !

Timeline

  • Begin 2021 - 1.2.0 - Persistent state store (eg: RocksDB Store), Repartition and Changelog topics
  • April 2021 - 1.3.0 - Processor API, Metrics, Interactive Queries, Standby Replica

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 = "192.168.56.1:9092";
    config.SaslMechanism = SaslMechanism.Plain;
    config.SaslUsername = "admin";
    config.SaslPassword = "admin";
    config.SecurityProtocol = SecurityProtocol.SaslPlaintext;
    config.AutoOffsetReset = AutoOffsetReset.Earliest;
    config.NumStreamThreads = 2;
    
    StreamBuilder builder = new StreamBuilder();

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

    kstream.Join<string, string, StringSerDes, StringSerDes>(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();
}

TODO implementation

  • Global state store
  • Refactor Subtopology & StreamTask assignment
  • Refactor Topology description for corresponding to java implementation
  • Refactor Partition grouper + record queue
  • Statefull processors impl
  • Transform and Through Processor
  • Supress Processor (.suppress(Suppressed.untilWindowCloses(Suppressed.BufferConfig.unbounded())))
  • Rocks DB state implementation
  • Changelog Topic
  • Task restoring
  • Repartition topic
  • Repartition Processor KAFKA-8611 | PR #7170
  • Processor API
  • Sample projects (Micro-services, console sample, topology implementation, etc ..) which use Streamiz package (see)
  • Protobuf & Json SerDes which interact Confluent Schema Registry
  • Optimizing Kafka Streams Topologies
  • Standby Replica
  • Interactive Queries
  • Metrics

Contributing

Owners:

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    馃枛 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 馃搳馃搱馃帀

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google 鉂わ笍 Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.