LGouellec / kafka-streams-dotnet

.NET Stream Processing Library for Apache Kafka 🚀
https://lgouellec.github.io/kafka-streams-dotnet/
MIT License
453 stars 73 forks source link

Streamiz and KNet #162

Closed mariomastrodicasa closed 1 week ago

mariomastrodicasa commented 1 year ago

Description

Hi @LGouellec, we are working, more or less, on the same topic. If you take look at KNet you can see our project. Currently we cover almost everything the official Apache Kafka does, Apache Kafka Streams too. We use a complete different approach to get access to Kafka Streams from a .NET environment. We focus on the APIs and not on the implementation of them. If there are new features, or bug solved, in new versions of Apache Kafka, they are immediately available. Do you think can be a convergence point?

LGouellec commented 1 year ago

Hi @mariomastrodicasa ,

I had a look to your project few weeks ago. Streamiz's aim is multiple :

If I'm not wrong, you release a gateway between the Clr and the JVM. So for running a KNet application, you have to run clr and Java runtime in the same process ?

What convergence point are you thinking ?

Best regards,

mariomastrodicasa commented 1 year ago

Hi @LGouellec

If I'm not wrong, you release a gateway between the Clr and the JVM. So for running a KNet application, you have to run clr and Java runtime in the same process ?

You got the technical point, our little drawback is the embedded JVM within the CLR process: with this approach we try to avoid to do again what it was done in Apache Foundation group (development, debug, testing) on each release. The project started as a gateway, however during the development other features were added. One, still open, is masesgroup/KNet#43 which tries to create APIs more closed to .NET style.

I try to write something more for completeness.

I had a look to your project few weeks ago. Streamiz's aim is multiple :

  • release a .Net stream processing library for Apache Kafka

KNet is more than stream processing. It covers Administration (in your case some functions are covered from librdkafka) and Apache Connect too, moreover it is able to run the server side application (a Linux OS is recommended from Apache Kafka); the full featured CLI interface gives access to all command-line classes.

  • provide the same API than Kafka streams Java

It was a driver for our design.

I read #147 and from my understanding:

About #100: until now it is out of project scope; anyway, if it is fast more than RocksDB, there is a C++ version of the library and maybe it can be added in KNet creating some dedicated Java classes with native access (like RocksDB do).

What convergence point are you thinking ?

Since our project aligns to latest Kafka version with little effort, some ideas are:

BR

LGouellec commented 1 year ago

Hi @mariomastrodicasa,

Good idea, I will test your KNetProducer/KNetConsumer to test their efficiency, and I will send to you my feedbacks :)

BR