Apache Kafka only officially provides an SDK for the Java language.
For the other languages, these are community based implementations. A list of recommended SDK has been compiled below to save you a little bit of time.
Feedback?Something looks wrong? Send us an email at feedback [at] conduktor [dot] io
How to choose a Kafka client library?
Usually most of the libraries will have support for the producer and consumer API. Decisions points come around the following:
-
Pure implementation or librdkafka based: librdkafka is a C/C++ library that implements the Kafka API and many libraries are built as a wrapper around it. This may be acceptable to you, or not. The main issues can arise when you build and deploy your software.
-
Does it support your security mechanism? Most libraries will for sure support PLAINTEXT, but ensure it supports the security mechanism you need for your Kafka deployment: SSL and SASL (SASL/SCRAM, SASL/OAUTHBEARER, SASL/GSSAPI, SASL/PLAIN, or even external SASL mechanisms such as SASL IAM for MSK)
-
Does it support the Confluent Schema Registry? The Confluent Schema Registry is a common implementation in a Kafka deployment, and making sure your libraries have the proper serializers and deserializers for it is very important. Usually, Confluent libraries do a good job at integrating with the Confluent Schema Registry. If it supports the Schema Registry, does it support Avro, JSON, or Protobuf? (based on your decisions)
-
Does it support the performance you need? This is usually the case, but make sure to do performance testing before going with a full blown implementation. This may save you some time.
Kafka client libraries SDK list
Here you can find a list of libraries that has been compiled to ensure you have some pointers on when to start with your implementation:
-
Java
-
Scala
-
C/C++
-
librdkafka: low-level implementation of the Kafka client, many other higher level language libraries are a wrapper around this library. Supports all kind of security, and most KIPs
-
CPP Kafka: based on librdkafka
-
Modern CPP Kafka: based on librdkafka
-
Golang
-
Python
-
Javascript / Node.js
-
.NET / C#
-
Rust
-
REST API
- Confluent REST Proxy: REST API for Kafka. Deploy with a reverse proxy sidecar to implement the security mechanism you need. Historically needed, but now that client library support for Kafka is quite good, you migh not have a use case for it.
-
Kotlin
- simply use the standard Java library
-
Haskell
-
Ruby