{"id":21528309,"url":"https://github.com/masesgroup/knet","last_synced_at":"2026-06-08T03:08:42.013Z","repository":{"id":37003670,"uuid":"421467137","full_name":"masesgroup/KNet","owner":"masesgroup","description":"KNet is a comprehensive .NET suite for Apache Kafka™ providing all features: Producer, Consumer, Admin, Streams, Connect, backends (ZooKeeper and Kafka)","archived":false,"fork":false,"pushed_at":"2025-04-07T17:01:02.000Z","size":140008,"stargazers_count":45,"open_issues_count":7,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T16:49:23.782Z","etag":null,"topics":["apache-kafka","dotnet","java","kafka","kafka-client","kafka-cluster","kafka-connect","kafka-connector","kafka-consumer","kafka-manager","kafka-producer","kafka-streams","scala"],"latest_commit_sha":null,"homepage":"https://knet.masesgroup.com/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/masesgroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"masesgroup","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-10-26T14:51:16.000Z","updated_at":"2025-04-08T06:58:39.000Z","dependencies_parsed_at":"2023-10-22T03:24:07.172Z","dependency_job_id":"558faab2-c1ba-4151-a688-ef35c87698c0","html_url":"https://github.com/masesgroup/KNet","commit_stats":{"total_commits":164,"total_committers":4,"mean_commits":41.0,"dds":"0.43292682926829273","last_synced_commit":"702c123ae119054075f3e5fe41d2b11bb5044c44"},"previous_names":["masesgroup/kafkabridge"],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKNet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKNet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKNet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKNet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/masesgroup","download_url":"https://codeload.github.com/masesgroup/KNet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248131471,"owners_count":21052819,"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":["apache-kafka","dotnet","java","kafka","kafka-client","kafka-cluster","kafka-connect","kafka-connector","kafka-consumer","kafka-manager","kafka-producer","kafka-streams","scala"],"created_at":"2024-11-24T01:52:38.507Z","updated_at":"2026-06-08T03:08:42.007Z","avatar_url":"https://github.com/masesgroup.png","language":"C#","funding_links":["https://github.com/sponsors/masesgroup"],"categories":[],"sub_categories":[],"readme":"# KNet: .NET suite for [Apache Kafka™](https://kafka.apache.org/)\n\nKNet is a comprehensive .NET suite for [Apache Kafka™](https://kafka.apache.org/) that provides direct access to all [Apache Kafka™ APIs](https://kafka.apache.org/documentation/#api) and features: Producer, Consumer, Admin, Streams, Connect, and KRaft backend support.\n\nKNet client-side features are also compatible with any broker that implements the Kafka wire protocol — see [Backend compatibility](#backend-compatibility) below.\n\n### Libraries and Tools\n\n|KNet | KNetCLI | KNet.Templates | KNetPS | KNetConnect |\n|:---:\t|:---:\t|:---:\t|:---:\t|:---:\t|\n|[![KNet nuget](https://img.shields.io/nuget/v/MASES.KNet)](https://www.nuget.org/packages/MASES.KNet) [![downloads](https://img.shields.io/nuget/dt/MASES.KNet)](https://www.nuget.org/packages/MASES.KNet) | [![KNetCLI nuget](https://img.shields.io/nuget/v/MASES.KNetCLI)](https://www.nuget.org/packages/MASES.KNetCLI) [![downloads](https://img.shields.io/nuget/dt/MASES.KNetCLI)](https://www.nuget.org/packages/MASES.KNetCLI) | [![KNet.Templates nuget](https://img.shields.io/nuget/v/MASES.KNet.Templates)](https://www.nuget.org/packages/MASES.KNet.Templates) [![downloads](https://img.shields.io/nuget/dt/MASES.KNet.Templates)](https://www.nuget.org/packages/MASES.KNet.Templates)| [![KNetPS](https://img.shields.io/powershellgallery/v/MASES.KNetPS.svg?style=flat-square\u0026label=MASES.KNetPS)](https://www.powershellgallery.com/packages/MASES.KNetPS/)| [![KNetConnect nuget](https://img.shields.io/nuget/v/MASES.KNetConnect)](https://www.nuget.org/packages/MASES.KNetConnect) [![downloads](https://img.shields.io/nuget/dt/MASES.KNetConnect)](https://www.nuget.org/packages/MASES.KNetConnect) |\n\n### Pipelines\n\n[![CI_BUILD](https://github.com/masesgroup/KNet/actions/workflows/build.yaml/badge.svg)](https://github.com/masesgroup/KNet/actions/workflows/build.yaml)\n[![CodeQL](https://github.com/masesgroup/KNet/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/masesgroup/KNet/actions/workflows/codeql-analysis.yml)\n[![CI_RELEASE](https://github.com/masesgroup/KNet/actions/workflows/release.yaml/badge.svg)](https://github.com/masesgroup/KNet/actions/workflows/release.yaml) \n\n### Project disclaimer\n\nKNet is a suite for Apache Kafka™, maintained by MASES Group and open to community contributions.\nIts primary scope is to support other MASES Group projects — both open-source and commercial — though it is freely available for any use. Dedicated community and commercial subscription plans are available.\nThe repository and releases may contain bugs. The release cycle follows the Apache Kafka™ release cycle, with additional releases driven by critical issues or enhancement requests from this or other dependent projects.\n\nLooking for Apache Kafka™ expertise? MASES Group can help you design, build, deploy, and manage Apache Kafka™ clusters and streaming applications. [Find out more.](src/documentation/articles/support.md)\n\n---\n\n## Scope of the project\n\nThis project aims to create a set of libraries and tools to directly access, from .NET, all the features available in the [Apache Kafka™ binary distribution](https://kafka.apache.org/downloads).\n\nThere are many client libraries written to manage communication with Apache Kafka™. Conversely, this project uses the Java™ packages released from The Apache Foundation directly, providing several benefits:\n\n* all implemented features are available at no extra implementation costs — see [KNet usage](src/documentation/articles/usage.md);\n* avoids any third-party communication protocol implementation;\n* access to all features made available from Apache Kafka™: the most important are Apache Kafka™ Streams and Apache Kafka™ Connect, which have no native C# implementation;\n* measured high [performance](src/documentation/articles/performance.md) in many operating conditions.\n\nCurrently the project tries to support, at our best, the [supported Apache Kafka™ binary distribution](https://kafka.apache.org/downloads):\n\n| KNet | State | Apache Kafka™ | Branch | .NET Framework | .NET | JVM™ |\n|:---:\t|:---:\t|:---:\t|:---:\t|:---:\t|:---:\t|:---:\t|\n| 3.x.x | Active | 4.x.x | [master](https://github.com/masesgroup/KNet) | [![.NET 4.6.2+](https://img.shields.io/badge/.NET-4.6.2%2B-purple)](https://dotnet.microsoft.com/) | [![.NET 8+](https://img.shields.io/badge/.NET-8%2B-purple)](https://dotnet.microsoft.com/) | [![Java 17+](https://img.shields.io/badge/Java-17%2B-blue)](https://www.oracle.com/java/) |\n| 2.9.* | Active | 3.9.x | [release/2.9.X](https://github.com/masesgroup/KNet/tree/release/2.9.X) | [![.NET 4.6.2+](https://img.shields.io/badge/.NET-4.6.2%2B-purple)](https://dotnet.microsoft.com/) | [![.NET 8+](https://img.shields.io/badge/.NET-8%2B-purple)](https://dotnet.microsoft.com/) | [![Java 11+](https://img.shields.io/badge/Java-11%2B-blue)](https://www.oracle.com/java/) |\n| 2.8.* | Deprecated | 3.8.* | [release/2.8.X](https://github.com/masesgroup/KNet/tree/release/2.8.X) | [![.NET 4.6.2+](https://img.shields.io/badge/.NET-4.6.2%2B-purple)](https://dotnet.microsoft.com/) | [![.NET 6+](https://img.shields.io/badge/.NET-6%2B-purple)](https://dotnet.microsoft.com/) | [![Java 11+](https://img.shields.io/badge/Java-11%2B-blue)](https://www.oracle.com/java/) |\n| 2.7.* | Deprecated | 3.7.* | [release/2.7.X](https://github.com/masesgroup/KNet/tree/release/2.7.X) | [![.NET 4.6.2+](https://img.shields.io/badge/.NET-4.6.2%2B-purple)](https://dotnet.microsoft.com/) | [![.NET 6+](https://img.shields.io/badge/.NET-6%2B-purple)](https://dotnet.microsoft.com/) | [![Java 11+](https://img.shields.io/badge/Java-11%2B-blue)](https://www.oracle.com/java/) |\n| 2.6.* | Deprecated | 3.6.* | [release/2.6.X](https://github.com/masesgroup/KNet/tree/release/2.6.X) | [![.NET 4.6.2+](https://img.shields.io/badge/.NET-4.6.2%2B-purple)](https://dotnet.microsoft.com/) | [![.NET 6+](https://img.shields.io/badge/.NET-6%2B-purple)](https://dotnet.microsoft.com/) | [![Java 11+](https://img.shields.io/badge/Java-11%2B-blue)](https://www.oracle.com/java/) |\n\nThe Apache Kafka™ packages are downloaded from:\n\n|kafka-streams-scala_2.13 | kafka-tools | kafka-shell |\n|:---:\t|:---:\t|:---:\t|\n|[![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/kafka-streams-scala_2.13.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22kafka-streams-scala_2.13%22) | [![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/kafka-tools.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22kafka-tools%22) | [![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/kafka-shell.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22kafka-shell%22) |\n\n|connect-mirror | connect-file | connect-basic-auth-extension | trogdor |\n|:---:\t|:---:\t|:---:\t|:---:\t|\n| [![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/connect-mirror.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22connect-mirror%22) | [![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/connect-file.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22connect-file%22) | [![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/connect-basic-auth-extension.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22connect-basic-auth-extension%22) | [![Maven Central](https://img.shields.io/maven-central/v/org.apache.kafka/trogdor.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.apache.kafka%22%20AND%20a:%22trogdor%22) |\n\n---\n\n## Backend compatibility\n\nKNet uses the official Apache Kafka™ Java client packages directly. This architecture has a direct impact on backend compatibility: **not all KNet features have the same compatibility scope**.\n\n**Client-side features** — Producer, Consumer, Admin Client, Kafka Streams, KNet Streams SDK, KNet Connect SDK, KNetPS scriptable cmdlets — communicate with the broker exclusively through the Kafka wire protocol and are therefore compatible with **any broker that implements it**, not only Apache Kafka™ itself.\n\nExamples of compatible brokers: [Redpanda](https://redpanda.com/), [Amazon MSK](https://aws.amazon.com/msk/), [Confluent Platform / Cloud](https://www.confluent.io/), [Aiven for Apache Kafka™](https://aiven.io/kafka), [IBM Event Streams](https://www.ibm.com/products/event-streams), [WarpStream](https://www.warpstream.com/), [AutoMQ](https://www.automq.com/), and others.\n\n\u003e **Important**: KNet also includes **server-side features** to start and manage Apache Kafka™ broker nodes, ZooKeeper™ nodes, and KRaft controllers (via KNetCLI, KNetPS, and Docker images). These features are specific to Apache Kafka™ and are not applicable to alternative brokers.\n\nSee [Supported Backends](src/documentation/articles/backends.md) for the full compatibility matrix covering all KNet feature areas.\n\n---\n\n### Community and contributions\n\nIf you find KNet useful:\n\n* Leave a ⭐ on the repository\n* Open [issues](https://github.com/masesgroup/KNet/issues) to report bugs 🐛 or request features\n* Submit Pull Requests to improve the project\n\nThis project adheres to the Contributor [Covenant code of conduct](https://github.com/masesgroup/KNet/blob/master/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to coc_reporting@masesgroup.com.\n\n## Summary\n\n* [Roadmap](src/documentation/articles/roadmap.md)\n* [Current state](src/documentation/articles/currentstate.md)\n* [Supported backends](src/documentation/articles/backends.md)\n* [Performance](src/documentation/articles/performance.md)\n* [Connect SDK](src/documentation/articles/connectSDK.md)\n* [Streams SDK](src/documentation/articles/streamsSDK.md)\n* [RocksDB configuration](src/documentation/articles/rocksdb_configuration.md)\n* [KNet usage](src/documentation/articles/usage.md)\n* [KNet APIs extensibility](src/documentation/articles/API_extensibility.md)\n* [KNet Serializer/Deserializer](src/documentation/articles/usageSerDes.md)\n* [KNet CLI usage](src/documentation/articles/usageCLI.md)\n* [KNet Connect usage](src/documentation/articles/usageConnect.md)\n* [KNet Docker usage](src/documentation/articles/docker.md)\n* [KNet PowerShell usage](src/documentation/articles/usagePS.md)\n* [KNet Template usage](src/documentation/articles/usageTemplates.md)\n* [How to build from scratch](src/documentation/articles/howtobuild.md)\n\n### Recent changes\n\n* **V3.0.3+ / 2.9.4+**: KNet Connect SDK now supports JVM hosted runtime — KNet Connect SDK connectors can be deployed and used like any other JVM-based connector in a standard Kafka Connect cluster; [here full usage](src/documentation/articles/usageConnect.md).\n* **V2.7.0+**:\n  + KNetProducer, KNetConsumer, and KNet Streams SDK manage JVM™ counter-part types;\n  + serializers support data exchange based on `byte` array and `ByteBuffer`;\n  + version 2.7.2 introduces `ISerDesSelector` to optimize serialization selection based on `byte` array or `ByteBuffer`.\n* **V2.5.0+**: two breaking changes — uses `Java.Lang.String` instead of `string` (`System.String`) in generated classes; KNet Streams SDK manages JVM™ counter-part types.\n* **V2.4.0+**: new KNet Streams SDK available.\n* **V2.0.0+**: code base fully reflected from the Apache Kafka™ JARs downloaded from Maven; some developed classes remain alongside the specific KNet implementations.\n* **V1.5.4+**: new packages dedicated to [KNet Serializer/Deserializer](src/documentation/articles/usageSerDes.md).\n* **V1.4.7+**: new KNetConnect project to execute Apache Kafka™ Connect related jobs; [here full usage](src/documentation/articles/usageConnect.md).\n* **V1.4.4+**: new KNetPS project — write PowerShell client scripts for an Apache Kafka™ cluster and more; [here full usage](src/documentation/articles/usagePS.md).\n\n---\n\n## Runtime engine\n\nKNet uses [JNet](https://github.com/masesgroup/JNet), and indeed [JCOBridge](https://www.jcobridge.com/) with its [features](https://www.jcobridge.com/features/), as its runtime engine to bridge the JVM™ and the .NET CLR within the same process:\n\n* **Cyber-security**:\n  + [JVM™](https://en.wikipedia.org/wiki/Java_virtual_machine) and [CLR, or CoreCLR,](https://en.wikipedia.org/wiki/Common_Language_Runtime) run in the same process, but are isolated from each other;\n  + JCOBridge does not make any code injection into JVM™;\n  + JCOBridge does not use any other communication mechanism than JNI;\n  + .NET (CLR) inherits the cyber-security levels of the running JVM™ and Apache Kafka™;\n* **Direct access to the JVM™ from any .NET application**:\n  + Any Java™/Scala class behind Apache Kafka™ can be directly managed: Consumer, Producer, Administration, Streams, Connect, and server-side classes;\n  + No need to learn new APIs: the same APIs are exposed in C# style;\n  + No extra validation cycle on protocol and functionality: bug fixes, improvements, and new features are immediately available;\n  + Documentation is shared between Java™ and .NET;\n* **Dynamic code**: enables writing Java™/Scala/Kotlin code seamlessly within a standard .NET application in C#/VB.NET — see this [simple example](https://www.jcobridge.com/net-examples/dotnet-examples/) and [KNet APIs extensibility](src/documentation/articles/API_extensibility.md).\n\n\u003e [!NOTE]\n\u003e [JCOBridge 2.6.\\*](https://www.jcobridge.com) can be used for free without any obligations. A commercial license must be purchased — or the software uninstalled — if you derive direct or indirect income from its usage.\n\n### JCOBridge resources\n\n| JCOBridge | 2.5.\\* series | 2.6.\\* series |\n| --- | --- | --- |\n| KNet | \u003e 1.5.\\* series | \u003e 3.0.\\* series and latest 2.9.\\* series |\n| Release notes | [Link](https://www.jcobridge.com/release-notes/) | [Link](https://www.jcobridge.com/release-notes/) |\n| Community Edition | [Conditions](https://www.jcobridge.com/pricing-25/) | [Conditions](https://www.jcobridge.com/pricing-26/) |\n| Commercial Edition | [Information](https://www.jcobridge.com/pricing-25/) | [Information](https://www.jcobridge.com/pricing-26/) |\n\nLatest release: [![JCOBridge nuget](https://img.shields.io/nuget/v/MASES.JCOBridge)](https://www.nuget.org/packages/MASES.JCOBridge)\n\nKAFKA is a registered trademark of The Apache Software Foundation. KNet has no affiliation with and is not endorsed by The Apache Software Foundation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasesgroup%2Fknet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasesgroup%2Fknet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasesgroup%2Fknet/lists"}