Skip to content

Commit

Permalink
Revert "Revert "Bump kafkaVersion from 3.8.1 to 3.9.0 in /src/jvm/knet (
Browse files Browse the repository at this point in the history
#734)…" (#744)

This reverts commit cd37a80.
  • Loading branch information
masesdevelopers authored Nov 11, 2024
1 parent cd37a80 commit 81ef7f6
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 131 deletions.
26 changes: 25 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ updates:
reviewers:
- "masesdevelopers"
target-branch: "release/2.7.X"

- package-ecosystem: "nuget" # See documentation for possible values
directory: "/src/net" # Location of package manifests
schedule:
interval: "weekly"
reviewers:
- "masesdevelopers"
target-branch: "release/2.8.X"

- package-ecosystem: maven
directory: "/src/jvm/knet"
Expand All @@ -51,6 +59,14 @@ updates:
- "masesdevelopers"
target-branch: "release/2.7.X"

- package-ecosystem: maven
directory: "/src/jvm/knet"
schedule:
interval: "weekly"
reviewers:
- "masesdevelopers"
target-branch: "release/2.8.X"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
Expand All @@ -72,4 +88,12 @@ updates:
interval: "weekly"
reviewers:
- "masesdevelopers"
target-branch: "release/2.7.X"
target-branch: "release/2.7.X"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
reviewers:
- "masesdevelopers"
target-branch: "release/2.8.X"
4 changes: 2 additions & 2 deletions .github/workflows/generateclasses.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ on:
default: false
type: boolean
ContinueOnLatestJNetReflectorError:
description: 'Shall continue execution in case of failure of build from latest unpublished version of JNetReflector'
description: 'Shall continue execution in case of failure of build from latest reflection done with JNetReflector'
required: true
default: false
type: boolean
Expand Down Expand Up @@ -66,7 +66,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Create Jars
run: mvn --file ./src/jvm/knet/pom.xml --no-transfer-progress package
run: mvn "-DmavenSkipMain=true" --file ./src/jvm/knet/pom.xml --no-transfer-progress package
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
Expand Down
41 changes: 22 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# KNet: .NET suite for [Apache Kafka™](https://kafka.apache.org/)
# KNet: .NET suite for [Apache Kafka™](https://kafka.apache.org/)

KNet is a comprehensive .NET suite for [Apache Kafka™](https://kafka.apache.org/) providing access to all [APIs](https://kafka.apache.org/documentation/#api) and features: Producer, Consumer, Admin, Streams, Connect, backends (ZooKeeper and Kafka).
KNet is a comprehensive .NET suite for [Apache Kafka™](https://kafka.apache.org/) providing access to all [APIs](https://kafka.apache.org/documentation/#api) and features: Producer, Consumer, Admin, Streams, Connect, backends (ZooKeeper and Kafka).

### Libraries and Tools

Expand All @@ -16,38 +16,41 @@ KNet is a comprehensive .NET suite for [Apache Kafka

### Project disclaimer

KNet is a suite for Apache Kafka™, curated by MASES Group, can be supported by the open-source community.
KNet is a suite for Apache Kafka™, curated by MASES Group, can be supported by the open-source community.

Its primary scope is to support other, public or internal, MASES Group projects: open-source community and commercial entities can use it for their needs and support this project, moreover there are dedicated community and commercial subscription plans.

The repository code and releases may contain bugs, the release cycle depends from Apache Kafka™ release cycle, critical discovered issues and/or enhancement requested from this or other projects.
The repository code and releases may contain bugs, the release cycle depends from Apache Kafka™ release cycle, critical discovered issues and/or enhancement requested from this or other projects.

Looking for the help of Apache Kafka™ experts? MASES Group can help you design, build, deploy, and manage Apache Kafka™ clusters and streaming applications.
Looking for the help of Apache Kafka™ experts? MASES Group can help you design, build, deploy, and manage Apache Kafka™ clusters and streaming applications.

---

## Scope of the project

This project aims to create a set of libraries and tools to direct access, from .NET, all the features available in the [Apache Kafka™ binary distribution](https://kafka.apache.org/downloads).
This project aims to create a set of libraries and tools to direct access, from .NET, all the features available in the [Apache Kafka™ binary distribution](https://kafka.apache.org/downloads).

There are many client libraries written to manage communication with Apache Kafka™. Conversely, this project use directly the Java packages released from The Apache Foundation giving more than one benefit:
There are many client libraries written to manage communication with Apache Kafka™. Conversely, this project use directly the Java packages released from The Apache Foundation giving more than one benefit:
* all implemented features are availables at no extra implementation costs, see [KNet usage](src/documentation/articles/usage.md);
* avoids any third party communication protocol implementation;
* access all features made available from Apache Kafka™: the most important are Apache Kafka™ Streams and Apache Kafka™ Connect which does not have any C# implementation;
* access all features made available from Apache Kafka™: the most important are Apache Kafka™ Streams and Apache Kafka™ Connect which does not have any C# implementation;
* measured high [performance](src/documentation/articles/performance.md) in many operating conditions.

Currently the project tries to support, at our best, the [supported Apache Kafka™ binary distribution](https://kafka.apache.org/downloads):
- Apache Kafka™ version 3.8.*:
Currently the project tries to support, at our best, the [supported Apache Kafka™ binary distribution](https://kafka.apache.org/downloads):
- Apache Kafka™ version 3.9.*:
- branch [master](https://github.com/masesgroup/KNet)
- KNet version 2.9.*
- Apache Kafka™ version 3.8.*:
- branch [master](https://github.com/masesgroup/KNet)
- KNet version 2.8.*
- Apache Kafka™ version 3.7.*:
- Apache Kafka™ version 3.7.*:
- branch [release/2.7.X](https://github.com/masesgroup/KNet/tree/release/2.7.X)
- KNet version 2.7.*
- Apache Kafka™ version 3.6.*:
- Apache Kafka™ version 3.6.*:
- branch [release/2.6.X](https://github.com/masesgroup/KNet/tree/release/2.6.X)
- KNet version 2.6.*

The Apache Kafka™ packages are downloaded from:
The Apache Kafka™ packages are downloaded from:

|kafka-clients | kafka-streams | kafka-tools | kafka_2.13 |
|:---: |:---: |:---: |:---: |
Expand Down Expand Up @@ -90,17 +93,17 @@ This project adheres to the Contributor [Covenant code of conduct](CODE_OF_CONDU

### News

* V1.4.4+: From version 1.4.4 there is a new project, named KNetPS, which permits to write PowerShell client scripts for an Apache Kafka™ cluster and many other things, [here full usage](src/documentation/articles/usagePS.md).
* V1.4.7+: From version 1.4.7 there is a new project, named KNetConnect, to execute Apache Kafka™ Connect related jobs, [here full usage](src/documentation/articles/usageConnect.md).
* V1.4.4+: From version 1.4.4 there is a new project, named KNetPS, which permits to write PowerShell client scripts for an Apache Kafka™ cluster and many other things, [here full usage](src/documentation/articles/usagePS.md).
* V1.4.7+: From version 1.4.7 there is a new project, named KNetConnect, to execute Apache Kafka™ Connect related jobs, [here full usage](src/documentation/articles/usageConnect.md).
* V1.5.4+: From version 1.5.4 there are new packages dedicated to [KNet Serializer/Deserializer](src/documentation/articles/usageSerDes.md)
* V2.0.0+: From version 2.0.0 the code base is fully reflected from the JARs of the Apache Kafka™ distribution downloaded from Maven; some developed classes still remains beside the specific KNet implementations
* V2.0.0+: From version 2.0.0 the code base is fully reflected from the JARs of the Apache Kafka™ distribution downloaded from Maven; some developed classes still remains beside the specific KNet implementations
* V2.4.0+: From version 2.4.0 it is available the new KNet Streams SDK
* V2.5.0+: From version 2.5.0 there are two breaking changes: uses `Java.Lang.String` instead of `string` (`System.String`) in generated classes and KNet Streams SDK manages the counter-part JVM types
* V2.7.0+: From version 2.7.0:
* all classes KNetProducer, KNetConsumer and KNet Streams SDK manage the counter-part JVM types
* serializers supports data exchange based on `byte` array and `ByteBuffer`
* version 2.7.2 introduces `ISerDesSelector` to optimize serialization selection based on `byte` array or `ByteBuffer`
* V2.8.0+: From version 2.8.0: supports Apache Kafka™ version 3.8.*
* V2.8.0+: From version 2.8.0: supports Apache Kafka™ version 3.8.*

---

Expand All @@ -111,9 +114,9 @@ KNet uses [JNet](https://github.com/masesgroup/JNet), and indeed [JCOBridge](htt
* [JVM](https://en.wikipedia.org/wiki/Java_virtual_machine) and [CLR, or CoreCLR,](https://en.wikipedia.org/wiki/Common_Language_Runtime) runs in the same process, but are insulated from each other;
* JCOBridge does not make any code injection into JVM;
* JCOBridge does not use any other communication mechanism than JNI;
* .NET (CLR) inherently inherits the cyber-security levels of running JVM and Apache Kafka™;
* .NET (CLR) inherently inherits the cyber-security levels of running JVM and Apache Kafka™;
* **Direct access the JVM from any .NET application**:
* Any Java/Scala class behind Apache Kafka™ can be directly managed: Consumer, Producer, Administration, Streams, Server-side, and so on;
* Any Java/Scala class behind Apache Kafka™ can be directly managed: Consumer, Producer, Administration, Streams, Server-side, and so on;
* No need to learn new APIs: we try to expose the same APIs in C# style;
* No extra validation cycle on protocol and functionality: bug fix, improvements, new features are immediately available;
* Documentation is shared;
Expand Down
67 changes: 42 additions & 25 deletions src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,16 @@

The command used to build the classes is the following:

1. Download the latest version of reflection utility:

```cmd
dotnet tool update -g MASES.JNetReflector
```

2. Run the reflection utility:

```cmd
MASES.JNetReflector.exe -TraceLevel 0 -OriginRootPath .\jars -DestinationRootPath .\src\ -ConfigurationFile .\src\configuration.json
jnetreflector -TraceLevel 0 -OriginRootPath .\jars -DestinationRootPath .\src\ -ConfigurationFile .\src\configuration.json
```

The configuration is:
Expand All @@ -18,67 +26,72 @@ The configuration is:
"DisableInterfaceMethodGeneration": true,
"CreateInterfaceInheritance": true,
"JarList": [
"kafka_2.13-3.8.0.jar",
"kafka-clients-3.8.0.jar",
"kafka-streams-3.8.0.jar",
"kafka-tools-3.8.0.jar",
"kafka-raft-3.8.0.jar",
"connect-api-3.8.0.jar",
"connect-basic-auth-extension-3.8.0.jar",
"connect-json-3.8.0.jar",
"connect-mirror-3.8.0.jar",
"connect-mirror-client-3.8.0.jar",
"connect-runtime-3.8.0.jar",
"connect-transforms-3.8.0.jar"
"kafka_2.13-3.9.0.jar",
"kafka-clients-3.9.0.jar",
"kafka-streams-3.9.0.jar",
"kafka-tools-3.9.0.jar",
"kafka-raft-3.9.0.jar",
"kafka-shell-3.9.0.jar",
"connect-api-3.9.0.jar",
"connect-basic-auth-extension-3.9.0.jar",
"connect-json-3.9.0.jar",
"connect-mirror-3.9.0.jar",
"connect-mirror-client-3.9.0.jar",
"connect-runtime-3.9.0.jar",
"connect-transforms-3.9.0.jar"
],
"OriginJavadocJARVersionAndUrls": [
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka_2.13/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka_2.13/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-clients/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-clients/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-streams/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-streams/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-tools/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-tools/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-raft/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-raft/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-shell/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-api/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-api/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-basic-auth-extension/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-basic-auth-extension/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-json/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-json/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror-client/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror-client/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-runtime/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-runtime/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-transforms/3.8.0/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-transforms/3.9.0/"
}
],
"NamespacesToAvoid": [
Expand Down Expand Up @@ -136,6 +149,10 @@ The configuration is:
"org.apache.kafka.raft.internals",
"org.apache.kafka.server",
"org.apache.kafka.shaded",
"org.apache.kafka.shell.command",
"org.apache.kafka.shell.glob",
"org.apache.kafka.shell.node",
"org.apache.kafka.shell.state",
"org.apache.kafka.streams.internals",
"org.apache.kafka.streams.processor.internals",
"org.apache.kafka.streams.state.internals",
Expand Down
52 changes: 26 additions & 26 deletions src/configuration.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,72 +7,72 @@
"DisableInterfaceMethodGeneration": true,
"CreateInterfaceInheritance": true,
"JarList": [
"kafka_2.13-3.8.1.jar",
"kafka-clients-3.8.1.jar",
"kafka-streams-3.8.1.jar",
"kafka-tools-3.8.1.jar",
"kafka-raft-3.8.1.jar",
"kafka-shell-3.8.1.jar",
"connect-api-3.8.1.jar",
"connect-basic-auth-extension-3.8.1.jar",
"connect-json-3.8.1.jar",
"connect-mirror-3.8.1.jar",
"connect-mirror-client-3.8.1.jar",
"connect-runtime-3.8.1.jar",
"connect-transforms-3.8.1.jar"
"kafka_2.13-3.9.0.jar",
"kafka-clients-3.9.0.jar",
"kafka-streams-3.9.0.jar",
"kafka-tools-3.9.0.jar",
"kafka-raft-3.9.0.jar",
"kafka-shell-3.9.0.jar",
"connect-api-3.9.0.jar",
"connect-basic-auth-extension-3.9.0.jar",
"connect-json-3.9.0.jar",
"connect-mirror-3.9.0.jar",
"connect-mirror-client-3.9.0.jar",
"connect-runtime-3.9.0.jar",
"connect-transforms-3.9.0.jar"
],
"OriginJavadocJARVersionAndUrls": [
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka_2.13/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka_2.13/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-clients/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-clients/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-streams/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-streams/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-tools/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-tools/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-raft/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-raft/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-shell/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/kafka-shell/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-api/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-api/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-basic-auth-extension/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-basic-auth-extension/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-json/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-json/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror-client/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-mirror-client/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-runtime/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-runtime/3.9.0/"
},
{
"Version": 8,
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-transforms/3.8.1/"
"Url": "https://www.javadoc.io/doc/org.apache.kafka/connect-transforms/3.9.0/"
}
],
"NamespacesToAvoid": [
Expand Down
Loading

0 comments on commit 81ef7f6

Please sign in to comment.