Learn Labs
15. Appendices A & B

15.7 B.4 Client libraries

"The Apache Kafka project provides client libraries for Java applications, but ONE LANGUAGE IS NEVER ENOUGH. There are many implementations out there, with popular languages such as Python, Go, and Ruby having several options. In addition, REST proxies (such as those from Confluent, Strimzi, or Karapace) can cover a variety of use cases. Here are a few client implementations that have stood the test of time."

LibraryLanguageLicenseNotes
librdkafkaCtwo-clause BSD⭐ "regarded as ONE OF THE BEST-PERFORMING LIBRARIES available. SO GOOD, IN FACT, THAT CONFLUENT SUPPORTS CLIENTS FOR GO, PYTHON, AND .NET THAT IT CREATED AS WRAPPERS AROUND librdkafka. ... the license makes it easy to use in any application."
Sarama — ShopifyGo (native)MIT"a native Golang implementation"
kafka-pythonPython (native)Apache 2.0"another native client implementation"
C dependencyConfluent Go / Python / .NETwrapperslibrdkafka (C)two-clause BSDSarama (Go), kafka-pythonnative implementationsKafka binary wire protocolimplemented independentlywrapper → best performance, at the cost of a C dependencynative → pure-language, easier to build and deploy

Recall Ch. 3: these are all not part of the Apache Kafka project; they implement Kafka's binary wire protocol independently.

Figure 15.7.1B.4 Client libraries